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 #跳过所有错误
接近财富自由第不知道多少天

浙公网安备 33010602011771号