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、系统环境: 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库中创建、复制用户 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服务: 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.128identified byCcu2020@;
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 statusG;
经验分享 程序员 微信小程序 职场和发展