work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

MySQL主从配置

Posted on 2020-11-12 18:08  work hard work smart  阅读(89)  评论(0编辑  收藏  举报

主配置log-bin,指定文件的名字

主配置server-id,默认为1

从配置server-id,与主不能重复

 

MySQL主: 192.168.127.134

MySQL从: 192.168.127.135

从库有数据库user_134 和表user

 

 

 

从库的数据库名和表名与主库保持一致

 

 

1、主库 134配置

vi  /etc/my.cnf

 

 配置完成后,重启Mysql 

service mysqld restart

 

2、从库 135配置

vi  /etc/my.cnf

server-id=2

 配置完成后,重启Mysql 

service mysqld restart

 

 

3、主数据库134 创建备份账号并授权  REPLICATION  SLAVE

该账号用于主从的数据同步

登录数据库,并创建用户repl

create user 'repl'@'%' identified by 'Larry@123456';

授权

grant replication slave on *.* to 'repl'@'%';

刷新权限

 flush privileges;

 

4、主数据库进行锁表。

注意:这里的目的是将主库的数据备份到从库中,以使主库和从库的数据保持一致。

登录mysql执行如下命令

FLUSH TABLES WITH READ LOCK;

锁表是为了数据备份。进行主从数据同步时,先对主库锁表(也就是不能进行写操作),在同步数据。

 

主库锁表后,往主库插入数据。可以发现一直在转圈圈。

 

 

 

5、主数据库找到log-bin的位置 SHOW MASTER STATUS;

 

 

6、主数据库备份数据

备份到dbdump.db 这个文件。

复制一个会话,并执行

mysqldump --all-databases --master-data  > dbdump.db  -uroot  -p

 

 可以看到文件已经保存好了

 

 

7、将主数据库(134)的数据复制到从数据库(135)

在从数据库中使用scp命令

scp root@192.168.127.134:~/dbdump.db  .

 

 

8、将文件加载到从数据库中

在从数据库所在的服务器(135)执行如下命令

mysql  < dbdump.db -uroot -p

 

 

 

9、查看验证从数据库是否同步了数据

 

 说明已经有数据了。

 

10、在主库中解除锁表

unlick tables;

然后可以发现前面的插入数据成功了。

 

此时主库中有两条数据,从库中只有1条数据。 

 

11、在从库上设置主的配置

mysql> change master to
-> master_host='192.168.127.134',
-> master_user='repl',
-> master_password='Larry@123456',
-> master_log_file='larry_mysql.000001',
-> master_log_pos=739;

 

 其中master_log_file 和master_log_pos的值与前面对应 

     

 

然后执行start slave;

 最后,可以发现从库中也有两条数据了。

 

12、主库中将Larry10改成Larry100

 

 然后进入从库,Larry10也变成了Larry100

 然后插入一条数据,11,Larry11。可以发现从库中也多了这条数据。