数据库主从同步
1、在做主从之前,需要修改主库配置文件
[root@master ~]# vim /etc/my.cnf [mysqld] basedir=/usr/local/mysql datadir=/data/mysqldata socket=/tmp/mysql.sock user=mysql server_id=1 # port=3306 log-bin=mysql-bin # [root@master ~]# systemctl restart mysql.service 创建备份用户,密码,授权 grant replication slave on *.* to 'backup'@'%' identified by 'BRpGP5ZsRfU='; 查看主库show master status\G
2、同步主库已有数据到从库
热备: 1、在主库导出数据库 mysqldump -uroot -p -R --single-transaction --master-data=2 --single-transaction -B ofc > ofc.sql
#打点备份 --master-data=N:备份的时候记录binlog信息 --master-data=2:备份,并记录binlog信息,注释的 (正常备份使用)
--master-data=1:备分,并记录binlog信息,不注释的 (扩展从库使用1和2都可以)
--master-data=0:备份,不记录binlog信息
--single-transaction 不锁表快照备份(结合 --master-data 可以做到热备)
-R:备份存储过程和函数
在导出的sql文件中找到打点位置(在前面几十行)找到类似如下内容
[root@master ~]# head -30 ofc.sql
...
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
...
3、将备份文件传到从库
scp ofc.sql root@192.168.1.101:/root/
4、修改从库配置文件
[root@master ~]# vim /etc/my.cnf [mysqld] basedir=/usr/local/mysql datadir=/data/mysqldata socket=/tmp/mysql.sock user=mysql server_id=2 # port=3306
#假如只同步主库的某一个库,可以添加如下配置
replicate_do_db=ofc
[root@master ~]# systemctl restart mysql.service
5、从库新建ofc数据库
create database ofc;
6、从库导入数据
mysql -u root -p ofc < ofc.sql
7、停止从库
stop slave;
8、配置主从
change master to master_host='192.168.1.100, master_port=3306, master_user='backup', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=154;
9、开启从库
start slave;
10、查看主从状态
show slave status\G
*************************** 1. row ***************************
...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...

浙公网安备 33010602011771号