数据库主从同步

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

...

 

posted @ 2021-12-30 19:16  岁月静好·  阅读(148)  评论(0)    收藏  举报