作者:李建生
归档:配置笔记
2020/01/02
1、服务器环境
主机A:10.5.11.50
主机B:10.5.11.51
2、配置
因操作系统的差别此配置文件可能有点差别
主机A上,vim /etc/my.cnf,添加:
[mysqld]
log-bin=mysql-bin
server-id=1 #服务id要和B不同
binlog_do_db=db1 #要同步的数据库 可以添加多个
主机B上,vim /etc/my.cnf,添加:
[mysqld]
log-bin=mysql-bin
server-id=2 #服务id要和A不同
binlog_do_db=db1 #要同步的数据库 可以添加多个
3、mysql数据库执行
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 447 | db1 | |
+------------------+----------+--------------+------------------+
#主机51
CHANGE MASTER TO
MASTER_HOST = '10.5.11.50', #另一台机器的地址
MASTER_PORT = 3306, #另一台机器的端口
MASTER_USER = '帐号',#另一台机器上第一步分配的用户名
MASTER_PASSWORD = '数据库密码', #另一台机器上第一步分配的密码
MASTER_LOG_FILE = 'mysql-bin.000001',#另一台机器上执行SHOW MASTER STATUS得到的文件名
MASTER_LOG_POS = 154; #另一台机器上执行SHOW MASTER STATUS得到的偏移量
在A上开启binlog,创建复制帐号
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 帐号@'%' IDENTIFIED BY '密码';
#主机 50
CHANGE MASTER TO
MASTER_HOST = '10.5.11.51', #另一台机器的地址
MASTER_PORT = 3306, #另一台机器的端口
MASTER_USER = '帐号',#另一台机器上第一步分配的用户名
MASTER_PASSWORD = '密码', #另一台机器上第一步分配的密码
MASTER_LOG_FILE = 'mysql-bin.000002',#另一台机器上执行SHOW MASTER STATUS得到的文件名
MASTER_LOG_POS = 154; #另一台机器上执行SHOW MASTER STATUS得到的偏移量
在B上开启binlog,创建复制帐号
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 帐号@'%' IDENTIFIED BY '密码';
4、开启同步
在A上 开启同步
mysql>start slave;
在B上 开启同步
mysql>start slave;
在A上执行查看同步状态
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.202
Master_User: user1
Master_Port: 3306
Connect_Retry: 5
Master_Log_File: mysql-bin.000008
Read_Master_Log_Pos: 106
Relay_Log_File: mysqld-relay-bin.000001
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000008
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
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: 106
Relay_Log_Space: 552
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:
A中的Slave_IO_Running 和 Slave_SQL_Running两个值都是YES,说明配置成功了。
B的配置就不贴了,也是配置成功的。
如果主从不同步 重启服务 然后进入mysql命令行执行下边命令 执行完成之后 执行 show slave status\G 查看状态
stop slave;
set global sql_slave_skip_counter=1;
start slave;
CHANGE MASTER TO
MASTER_HOST = '10.5.11.50',
MASTER_PORT = 3306,
MASTER_USER = 'root',
MASTER_PASSWORD = 'password',
MASTER_LOG_FILE = 'mysql-bin.000005',
MASTER_LOG_POS = 62427731;
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO root@'%' IDENTIFIED BY 'password';