MySQL主从配置

MySQL主从配置

  • 修改my.cnf文件,配置server_id 、开启binlog
# master 库操作
$ cat /etc/my.cnf 
···
server-id=1    # master 及 slave 不可重复
log-bin=mysql-bin    # 开启binlog
···
$ cd /data/bkce/service/mysql/bin/
$ ./mysql.sh restart    # 通过启动脚本重启MySQL

# slave 库操作
$ grep 'password' /var/log/mysqld.log |head -n1 #获取mysql默认密码
$ cat /etc/my.cnf
...
server-id=2
log-bin=mysql=bin
...

$ cd /data/bkce/service/mysql/bin/
$ ./mysql.sh restart    # 通过启动脚本重启MySQL(如果没有此脚本,从执行 cp ../support-files/mysql.server ./mysql.sh 文件需修改配置才能使用)
  • 主库创建同步用户
$ mysql --login-path=default-root   # 登录mysql
grant replication slave on *.* to 'replica'@'172.21.1.%' identified by '123456';
flush privileges;
  • 数据库全备并 导入从库
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Test123.';  #修改数据库密码(可选)
$ mysqldump -uroot -p -A >all_back.sql    # -A --all-databases
$ scp all_back.sql 172.21.1.1:~    # 推送至从库主机

# 从库主机操作
$ mysql -uroot -p < /root/all_back.sql
  • 获取master状态
flush table with read lock;    # 为了备份数据的统一, 开启全局锁
UNLOCK TABLES;       # 关闭全局锁
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000006 | 17896381 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
  • 从库配置同步binlog
$ mysql -uroot -p
change master to 
master_host='172.21.1.1',   # 主库地址
master_user='replica', 
master_password='123456', 
master_log_file='mysql-bin.000006',    # 需要与主库获取到的一致
master_log_pos=17896381;   # 同上

start slave;   # 开启同步
show salve status\G   # 查看是否成功

# 主要观察以下两个参数是否为Yes
Slave_IO_Running: Yes     
Slave_SQL_Running: Yes

如果出现数据不一致可通过跳过当前数据:

mysql主从同步跳过错误的方法:

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 #跳过所有错误
posted @ 2025-05-13 13:34  金元  阅读(6)  评论(0)    收藏  举报