实现MySQL主从复制需要进行的配置
-
主服务器 - 192.168.1.24:
开启二进制日志
配置唯一的server-id
获得master二进制日志文件名及位置
创建一个用于slave和master通信的用户账号
-
从服务器 - 192.168.1.104:
配置唯一的server-id
使用master分配的用户账号读取master二进制日志
启用slave服务
准备工作
- 主从数据库版本最好一致
- 主从数据库内数据保持一致
主数据库master修改
-
修改mysql配置 (找到主数据库的配置文件my.cnf(或者my.ini),我的在/etc/mysql/my.cnf,在[mysqld]部分插入如下两行)
#开启二进制日志 log-bin=mysql-bin #设置日志格式 binlog-format=ROW #设置server-id server-id=1 #设置主从复制数据库 binlog-do-db=zhu_cong_test
-
重启mysql,创建用于同步的用户账号
#创建用户 CREATE USER 'slave'@'192.168.1.104' IDENTIFIED BY '123456'; #分配权限 GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.104'; #刷新权限 flush privileges;
-
查看master状态,记录二进制文件名和位置
mysql> SHOW MASTER STATUS\G; *************************** 1. row *************************** File: mysql-bin.000005 Position: 154 Binlog_Do_DB: zhu_cong_test Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec)
从数据库slave修改
-
同样找到my.cnf配置文件,添加server-id
#设置server-id,必须唯一 server-id=2 #开启二进制日志 log-bin=mysql-bin #设置日志格式 binlog-format=ROW
-
重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置)
#设置同步 CHANGE MASTER TO MASTER_HOST='192.168.1.24', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=154; #启动slave同步进程 start slave; #查看slave状态 show slave status\G;
-
查看slave状态:(Slave_IO_Running: Yes Slave_SQL_Running: Yes)
mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.24 Master_User: salve Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000005 Read_Master_Log_Pos: 154 Relay_Log_File: localhost-relay-bin.000002 Relay_Log_Pos: 1383 Relay_Master_Log_File: mysql-bin.000005 Slave_IO_Running: Yes Slave_SQL_Running: Yes
主要确认 Master_Host,Master_User,Master_Port,Master_Log_File,Read_Master_Log_Pos 是否与主服务器一致