准备两台机器,一台主库一台从库。主库ip为192.168.59.129,从库ip为192.168.59.130
主库配置
1)设置server-id值并开启binlog参数
[mysqld]
log_bin = mysql-bin
server_id = 120
重启数据库
2) 建立同步账号
3)锁表设置只读
mysql> flush tables with read lock;
4)查看主库状态
mysql> show master status;
5)备份数据库数据
mysqldump -uroot -p -A -B |gzip > /tmp/backup/mysql_back.$(date +%F).sql.gz
6)解锁
mysql> unlock tables;
7)主库备份数据上传到从库
scp /tmp/backup/mysql_back.2023-07-23.sql.gz 192.168.95.130:/tmp/backup/
从库上设置
1)设置server-id值并关闭binlog参数
#log_bin = /data/mysql/data/mysql-bin
server_id = 130
重启数据库:
2)还原从主库备份数据
cd /tmp/backup/
gzip -d mysql_bak.2023-07-23.sql.gz
mysql -uroot -p < mysql_bak.2023-07-23.sql
检查还原:
mysql -uroot -p -e 'show databases;'
3)设定从主库同步
mysql> change master to
MASTER_HOST='192.168.59.129',
MASTER_PORT=3306,
MASTER_USER='rep',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=329;
4)启动从库同步开关
mysql> start slave;
检查状态:
mysql> show slave status\G
8、MySQL主从复制的状况监测
主从状况监测主要参数 Slave_IO_Running,Slave_SQL_Running,Seconds_Behind_Master
Slave_IO_Running: IO线程是否打开 YES/No/NULL
Slave_SQL_Running: SQL线程是否打开 YES/No/NULL
Seconds_Behind_Master: NULL #和主库比同步的延迟的秒数
vim auto.cnf
server-uuid=
测试主从同步:
主库创建一个数据库:
mysql -uroot -p -e 'create database ttt;'
从库检查:
mysql -uroot -p -e 'show databases;' |grep "ttt"