https://blog.csdn.net/isis45454545454/article/details/126510152

master端

my.ini (my.cnf)

[mysqld]
#[必须]启用二进制日志,数据间复制必不可少
log-bin=mysql-bin 
#[必须]服务器唯一ID
server-id=1
#需要同步的数据库,不在内的不同步。(不添加这行表示同步所有)
binlog-do-db=user_db
#这是不记录binlog,来达到从库不同步mysql库,以确保各自权限
binlog-ignore-db=mysql,performance_schema,information_schema
create user slave@'%' identified by 'Jiutian.123';
​
GRANT ALL PRIVILEGES ON *.* TO 'slave'@'%'WITH GRANT OPTION;
​
flush privileges;
​
​
show master status;

slave端

my.ini (my.cnf)

[mysqld]
#[必须]服务器唯一ID
server-id=100
replicate-do-db=user_db
replicate-ignore-db=mysql,performance_schema,information_schema
  • replicate-do-db 设定需要复制的数据库(多数据库使用逗号,隔开)

  • replicate-ignore-db 设定需要忽略的复制数据库 (多数据库使用逗号,隔开)

  • replicate-do-table 设定需要复制的表

  • replicate-ignore-table 设定需要忽略的复制表

  • replicate-wild-do-table 同 replication-do-table 功能一样,但是可以通配符

  • replicate-wild-ignore-table 同 replication-ignore-table 功能一样,但是可以加通配符

stop slave;
​
change master to
master_host='192.168.244.128',master_port=33070,master_user='slave',master_password='Jiutian.123',
master_log_file='mysql-bin.000003',master_log_pos=873,get_master_public_key=1;
​
start slave;
​
# 如果遇到报错,执行 reset slave;
​
show slave status\G;

Slave_SQL_Running: No 问题分析

  1. 程序可能在 slave 上进行了写操作。

  2. 也可能是 slave 机器重启后,事务回滚造成的。

解决办法一:跳过这个错误

stop slave ;
# 跳过一次
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave ;

解决办法二:手动同步 pos 值

# master
show master status;
​
# slave
stop slave;
​
change master to
master_host='192.168.244.128',master_user='slave',master_password='Jiutian.123',
master_log_file='mysql-bin.000035',master_log_pos=1147,get_master_public_key=1;
​
​
start slave;
​
show slave status\G;

我也放荡不羁爱自由!