Linux环境下MySQL主从同步环境部署

linux环境下MySQL主从同步部署

一、MySQL主从复制集群至少需要2台数据库服务器,其中一台是master、另外一台slave库,MySQL主从数据同步是一个异步复制的过程。
首先在master上开启bin-log日志功能,bin-log日志用于记录在master库中执行的增删改查与更新操作sql语句。整个过程需要开启3个线程,分别是:
1、master开启I/O线程;
2、slave开启I/O线程;
3、SQL线程。
二、MySQL主从同步原理:
1、slave上执行slave start,slave I/0线程会通过在master创建的授权用户连接上至master,并请求master从指定的文件和位置之后发送bin-log日志内容;
2、master接收来自slave I/0线程的请求后,master I/0线程根据slave发送的指定bin-log日志和positiion点之后内容,然后返回给slave的I/0线程;
3、返回的信息中除了bin-log日志内容外,还有master最新的bin-log文件名以及在bin-log中的下一个指定更新position点;
4、slave I/0线程接收到信息后,将接收到的日志内容依次添加到slave端的relay-log最末端,并将读取到master端的bin-log的文件名和position点记录到master.info文件中,以便下一次读取能告知master从相应的bin-log文件及最后一个position点开始发起请求;
5、slave SQL线程检测到relay-log中内容有更新,会立刻解析relay-log日志中的内容,将解析后的SQL语句在slave里执行,执行成功后slave库与master库数据保持一致。
三、主从复制实战
本次项目部署MySQL主从复制环境构建2台服务器,配置1主1从。

1、系统环境:
Linux环境下MySQL主从同步环境部署_第1张图片
2、主从部署
(1)修改2个节点hosts文件(注意2台节点都需要配置)
192.168.198.128 node01
192.168.198.131 node02
测试:
在这里插入图片描述
(2)修改MySQL配置文件
默认情况下MySQL的配置文件是/etc/my.cnf,首先修改node01主机文件,具体如下:

server-id = 1 :节点标识,主、从节点不能相同,且全局唯一;
log-bin = mysql-bin:表示开启MySQL的binlog日志功能;
会生成文件名为: mysql-bin. 000001;
relay-log = mysql-relay-bin :用来定义relay-log日志文件的命名格式;replicate-wild-ignore-table = mysql.%
replicate-wild-ignore-table = test.%
replicate-wild-ignore-table = information_schema.%

以上三条中,replicate-wild-ignore-table :是复制过滤选项,可以过滤掉不需要复制的数据库或表。eg: mysql.%表示不复制MySQL库下的所有对象。
(3)修改node02主机的配置文件:server-id = 2

log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.&replicate-wild-ignore-table=test.&
replicate-wild-ignore-table=information_schema.&

(4)创建复制用户并授权
1)在node01上MySQL库中创建、复制用户
Linux环境下MySQL主从同步环境部署_第2张图片
2)然后在node02的MySQL库中将node01设为自己的主服务器:

mysql> use mysql ;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> change master to \
	-> master_host='192.168.198.128',
	->master_user='repl_user ',
	->master_password='Ccu2020@',
	-> master_log_file=' mysql-bin. 000003',
	->master_log_pos=559 ;

3)在node02上启动slave服务:
Linux环境下MySQL主从同步环境部署_第3张图片
4)上面是将node01到node02的MySQL主从复制已经完成。接下来开始配置从node02到node01的MySQL复制。
在node02上MySQL库中创建复制用户:

mysql>use mysq l;
Database changed
mysql> grant replication slave on *.* to 'repl_user'@'192.168.198.128'identified by'Ccu2020@';
Query OK,0 rows affected (0.01 sec)
mysql> show master status;

6)然后在node01的MySQL库将node02设为自己的主服务器:

mysql> change master to \
-> master_host='192.168.198.131',
-> master_user='repl_user ',
-> master_password='Ccu2020@',
-> master_log_file='mysql-bin.000003 ',
->master_log_pos=337;
Query OK,0 rows affected,2 warnings (0.01 sec)

7)最后,在node01上启动Slave服务:

mysql> start slave;
Query OK,0 rows affected (0.01 sec)

8)在node01查看Slave运行状态:

mysql> show slave status\G;

Linux环境下MySQL主从同步环境部署_第4张图片

你可能感兴趣的:(linux,数据库,linux,mysql)