MySQL从库搭建方案

/ 原创 / 没有评论 / 728浏览

master开启bin-log,设置数据库

# master server
# vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin   #[必须]启用二进制日志
server-id=222       #[必须]服务器唯一ID,默认是1,一般取IP最后一段

# 设置需要写binlog的数据库
binlog-do-db=db1
binlog-do-db=db2

gtid-mode=on
enforce-gtid-consistency=true

重启MySQL数据库

systemctl restart mysqld

创建slave账号

-- # master server mysql
GRANT REPLICATION SLAVE ON *.* to 'slave1'@'主库host' identified by 'slave_pwd';

停服,记录bin-log-index, position, 关掉自动重启job!!!

-- # master server mysql
show master status;

备份数据

# master server
mkdir /tmp/db_backup
mysqldump -uroot -p*** --databases db | gzip > /tmp/db_backup/db-20220607.sql.gz

还原数据

# slave server   192.168.0.1 is master server ip
mkdir -p /home/db_data
scp root@192.168.0.1:/tmp/db_backup/db-20220607.sql.gz /home/db_data
# create db
CREATE DATABASE `database0` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# import
gunzip -f </home/db_data/db-20220607.sql.gz| mysql -u root -p****

配置slave,设置数据库

# slave server
# vim /etc/my.cnf
[mysqld]
server-id=129
gtid-mode=on
enforce-gtid-consistency=true
master_info_repository=TABLE
relay_log_info_repository=TABLE
#replicate-rewrite-db = database0 -> slave_database0
#replicate-rewrite-db = database1 -> slave_database1
# 重启MySQL数据库!!!

# master_log_file 和 master_log_pos 改为上文记录的值
change master to master_host='192.168..0.1',master_user='slave1',master_password='slave_pwd',master_log_file='mysql-bin.000001',master_log_pos=0 for channel '2';
start slave;
show slave status;

测试同步

在master数据表中添加记录, 查看slave对应的数据表中是否同步

启动服务

测试通过则同步启动应用服务器

验证数据

观察新增数据是否同步

其他