MySQL 主从复制配置

主从分别创建相同用户:
mysql> grant all on *.* to 'li'@'192.168.1.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)


设置server-id:
vi /etc/my.cnf
[mysqld]节点
主服务器添加:(MySQL 8不允许server-id=0)
server-id=1
从服务器添加:
server-id=2
read-only

设置read-only的话无"super(管理)权限"的用户将无权写入数据


主从服务器开启二进制日志:
mysql> show variables like '%log_bin%';
vi /etc/my.cnf
[mysqld]节点
log-bin=mysql-bin
service mysqld restart


主服务器查看binlog信息:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      106 |              |                  |
+------------------+----------+--------------+------------------+


slave服务器更改设置:
mysql> change master to 
master_host='192.168.10.130', 
master_user='user', 
master_password='password', 
master_port=3306, 
master_log_file='上面查到的file', 
master_log_pos=上面查到的Position;


启动slave同步进程:
mysql> start slave;
 

slave服务器状态检查:
mysql> show slave status \G;
其中Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表明状态正常。

如果出现:
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log
可能是msater_log配置错误


同步错误之后跳过错误:
1.跳过指定数量的事务:
mysql> slave stop;
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;        #跳过一个事务
mysql> slave start;
2.修改mysql的配置文件,通过slave_skip_errors参数来跳所有错误或指定类型的错误
vi /etc/my.cnf
[mysqld]
#slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误
#slave-skip-errors=all #跳过所有错误


在主服务器库中增加数据,检查从服务器是否正常同步。