Linux centosVMware MySQL主从介绍、准备工作、配置主、配置从、测试主从同步

一笑奈何 提交于 2020-03-18 06:26:10

一、MySQL主从介绍

MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 MySQL主从是基于binlog的,主上须开启binlog才能进行主从。 主从过程大致有3个步骤

1)主将更改操作记录到binlog里

2)从将主的binlog事件(sql语句)同步到从本机上并记录在relaylog里

3)从根据relaylog里面的sql语句按顺序执行

主上有一个log dump线程,用来和从的I/O线程传递binlog

从上有两个线程,其中I/O线程用来同步主的binlog并生成relaylog,另外一个SQL线程用来把relaylog里面的sql语句落地

MySQL主从原理图

 

 

 

三、配置主

安装mysql

修改vi /etc/my.cnf,增加server- id = 101和log_bin = davery1

 

 

报错,需要把 /data/mysql   和/usr/local/mysql 的数组数主都改一下

cd /usr/local/mysql

chowen -R mysql.mysql .

 

chown -R mysql.mysql /data/mysql

 

修改完配置文件后,启动或者重启mysqld服务

/etc/init.d/mysqld restart

cd /data/mysql 这时目录里边会生成很多新的文件,index文件必须一定要有在能完成主从配置

 

测试

把zrlog备份到 /tmp/zrlog.sql

创建一个新的库test2,并把/tmp/zrlog.sql这个库回复到test2,后边参考的库就是test2

[root@davery mysql]#  /usr/local/mysql/bin/mysql -uroot -pmimA123 -e "create database test2"

/usr/local/mysql/bin/mysql -uroot -pmimA123 test2 < /tmp/zrlog.sql

查看两个库test2  zrlog 大小一致

 

 

创建用作同步数据的用户,先登陆mysql

[root@davery mysql]# /usr/local/mysql/bin/mysql -uroot -pmimA123

mysql> grant replication slave on *.* to 'repl'@'192.168.1.106' identified by 'mimA123'; 指定从ip,以密码登陆

mysql>  flush tables with read lock;把表锁定

 

show master status;使用到如下两个

davery1.000002

10557

 

然后退出

数据备份,这时候主就配置好了

 

四、配置从

安装mysql

查看my.cnf,配置server-id = 106,要求和主不一样

 

修改完配置文件后,启动或者重启mysqld服务

[root@davery01 mysql]# /etc/init.d/mysqld restart

 

把主上test2库同步到从上

scp 192.168.1.101:/tmp/*.sql /tmp/

 

可以先创建test2库,然后把主上的/tmp/mysql.sql拷贝到从上,然后导入test2库,为防止错乱,两边都需要有同样的数据库名。

/usr/local/mysql/bin/mysql -uroot

mysql> create database davery;

mysql> create database zrlog;

mysql> create database test2;

可以看到数据已经一致了

从备份原/tmp/*.sql 还原到对应的库里边

[root@davery01 ~]# /usr/local/mysql/bin/mysql -uroot zrlog < /tmp/zrlog.sql
[root@davery01 ~]#
[root@davery01 ~]# /usr/local/mysql/bin/mysql -uroot test2 < /tmp/zrlog.sql
[root@davery01 ~]#
[root@davery01 ~]# /usr/local/mysql/bin/mysql -uroot mysql < /tmp/my2.sql
[root@davery01 ~]#
[root@davery01 ~]#
[root@davery01 ~]# ls /data/mysql

然后登陆从,并关闭从

stop slave;

mysql> change master to master_host='192.168.1.101', master_user='repl', master_password='mimA123', master_log_file=='davery1.000002', master_log_pos=10557;

start slave;

show slave status\G

出现如下内容说明主从配置成功啦!

Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.101
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: davery1.000002  
Read_Master_Log_Pos: 10557
Relay_Log_File: davery01-relay-bin.000002
Relay_Log_Pos: 281
Relay_Master_Log_File: davery1.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes  这两行说明主从在运行。

 

 

还要到上执行 unlock tables 这一步也不能忘记

这时候主从配置就真的配置完成了

 

 

五、测试主从同步

从上执行mysql -uroot

show slave stauts\G

看是否有

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

还需关注

Seconds_Behind_Master: 0 //为主从延迟的时间

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

配置参数

vim  /etc/my.cnf

主服务器上 binlog-do-db= //仅同步指定的库

binlog-ignore-db= //忽略指定库

从服务器上

replicate_do_db=

replicate_ignore_db=   忽略库

replicate_do_table=

replicate_ignore_table=   忽略表

replicate_wild_do_table=    //如aming.%, 支持通配符%

replicate_wild_ignore_table=

测试主从

主上 

/usr/local/mysql/bin/mysql -uroot -pmimA123 登陆

查看都有哪些库

使用test2库

use test2;

 

select count(*) from user; 查看user表有多少行

可看到一行

 

truncate table ;

 

到从上 

/usr/local/mysql/bin/mysql -uroot

select count(*) from user; 也是一行

 

主上继续drop table user;

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!