配置Master数据库
- 添加同步用的用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.%' IDENTIFIED BY 'mysql';
- repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.0.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.0.0-192.168.0.255的Server都可以以repl用户登陆主服务器。当然你也可以指定固定Ip。
- 在[mysqld]下面增加下面几行代码:
server-id=1 //主数据库服务的唯一标识号
log-bin=mysql-bin
2.1 想要配置哪些同步哪些不同步则添加如下信息:
binlog-do-db = test3 #要同步的数据库
binlog-do-db = test4
binlog-ignore-db = mysql #不需要同步的数据库
binlog_ignore_db = information_schema
binlog_ignore_db = performation_schema
binlog_ignore_db = sys
- 查看日志
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000014 | 412 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
- 重启MySQL服务
配置Slave从服务器
- 在[mysqld]下面增加下面几行代码:
server-id=100 //从数据库服务的唯一标识号
log-bin=mysql-bin
- 重启mysql使配置生效
- 然后连接主库
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.10.212',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='mysql',
MASTER_LOG_FILE='mysql-bin.000014',
MASTER_LOG_POS=412
for channel '500';
Query OK, 0 rows affected
# 开始同步
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
stop slave; //停止同步
start slave; //开始同步
//必须和【主库】的信息匹配。
CHANGE MASTER TO
MASTER_HOST=’192.168.10.212′, //主库IP
MASTER_PORT=3306, //主库端口
MASTER_USER=’repl’, //访问主库且有同步复制权限的用户
MASTER_PASSWORD=’mysql’, //登录密码
【关键处】从主库的该log_bin文件开始读取同步信息,主库show master status返回结果
MASTER_LOG_FILE=’mysql-bin.000014′,
【关键处】从文件中指定位置开始读取,主库show master status返回结果
MASTER_LOG_POS=412 //主数据库文件开始位置,查询日志时获得
for channel ‘300’; //定义通道名称
- 查看同步状态
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.0.11
Master_User: tongbu
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000014
Read_Master_Log_Pos: 20014049
Relay_Log_File: centos02-relay-bin.000002
Relay_Log_Pos: 412
Relay_Master_Log_File: mysql-bin.000014
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…………
- 配置完成,到主库创建数据库进行一些数据操作,验证配置
遇到的一些错误
Slave_IO_Running: No //未运行
查看从数据库日志文件
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log:
‘Client requested master to start replication from impossible position’
查询网上文档解决 MySQL主从失败 错误Got fatal error 1236解决方法
我自己直接改了MASTER_LOG_POS=412 解决,没有从主数据库找POS
其它一个用的解决文档mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结
- 另外一个有用的文档
MySQL5.7多主一从(多源复制)同步配置