Mysql主从数据库部署

一.目的
1.主从服务器设置的稳健性得以提升,如果主服务器发生故障, 可以把本来作为备份的从服务器 升为新的主服务器。
2.在主从服务器上分开处理用户的请求,可获得更短的响应时间。
3.用从服务器做数据备份而不会占用主服务器的系统资源。

二.场景描述
主服务器: IP:172.29.143.162 系统:CentOS 6.5 数据库:Mysql 5.7
从服务器 IP:172.29.143.163 系统:CentOS 6.5 数据库:Mysql 5.7

三.部署手顺
配置主服务器 1.修改主服务器的配置文件/etc/my.cnf
log-bin = mysql-bin #开启bin-log
server-id = 162 #确定这个id没有被别的mysql服务所使用
log-slave-updates = 1 #如果从库要作为其他从库的主库,必须添加该参数 sync_binlog = 1 #如果开启此选项,MySQL每次 交事务之前会将二进制同步到磁盘上

2.重启数据库
$ service mysqld restart

3.创建用户并授权
mysql> create user ‘mysync’@’%’ identified by ‘******’;
mysql> flush privileges;
mysql> grant replication slave on *.* to mysync@’%’ identified by ‘******’;

4.查询主数据库的状态
mysql> show master status;
+——————+———-+————–+——————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+——————+———-+————–+——————+——————-+
|mysql-bin.000014 | 430 | | | |
+——————+———-+————–+——————+——————-+
记下File以及Position的值,在后面进行从服务器操作的时候需要使用。

配置从服务器
1.修改从服务器的配置文件/etc/my.cnf
log-bin = mysql-bin #开启bin-log
server-id = 163 #确定这个id没有被别的mysql服务所使用
replicate-ignore-db = information_schema #忽略的数据库,如果有多个,则添加多行 replicate-ignore-db = mysql
replicate-ignore-db = performance_schema
replicate-ignore-db = sys
log-slave-updates = 1 #如果从库要作为其他从库的主库,必须添加该参数 sync_binlog = 1 #如果开启此选项,MySQL每次 交事务之前会将二进制同步到磁盘上

2.重启数据库
$ service mysqld restart

3.登陆
$ mysql -uroot -p

4.配置slave服务器用于连接master服务器的参数
mysql> change master to master_host=’172.29.143.162′, master_user=’mysync’,master_password=’******’, master_log_file=’mysql-bin.000014′, master_log_pos=430;

5.启动slavle同步功能
mysql> start slave;

6.主从同步检查
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.29.143.162
Master_User: mysync
Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000014
Read_Master_Log_Pos: 430

Relay_Log_File: flash3-relay-bin.000005
Relay_Log_Pos: 643

Relay_Master_Log_File: mysql-bin.000014
Slave_IO_Running: Yes

Slave_SQL_Running: Yes
Replicate_Do_DB:

Replicate_Ignore_DB: information_schema,mysql,performance_schema,sys,test
Replicate_Do_Table:

Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:
Skip_Counter: 0

Exec_Master_Log_Pos: 430
Relay_Log_Space: 1017
Until_Condition: None

Until_Log_File:
Until_Log_Pos: 0

Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:

Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:

Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:

Replicate_Ignore_Server_Ids:
Master_Server_Id: 162

Master_UUID: 5c291160-c90b-11e7-8db3-0050568468d9
Master_Info_File: /var/lib/mysql/master.info

SQL_Delay: 0
SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400

Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:

Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:

1 row in set (0.00 sec) 注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,其中一个NO均属错误。

以上操作过程,主从服务器配置完成。