MySQL实现主从复制及主主复制

时间:2021-07-11
本文章向大家介绍MySQL实现主从复制及主主复制,主要包括MySQL实现主从复制及主主复制使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

mysql实现主从复制

实验环境

nodeMasterSlave
linux CentOS7.9 CentOS7.9
mysql 5.7 5.7
IP 192.168.18.131 192.168.18.133

主机点配置:

[mysqld]
 server-id=1  				#为当前节点设置一个全局惟的ID号
 log-bin				#启用二进制日志
 datadir=/data/mysql					
 socket=/data/mysql/mysql.sock
 log-error=/data/mysql/mysql.log
 pid-file=/data/mysql/mysql.pid
 [client]
 socket=/data/mysql/mysql.sock

从节点配置:

[mysqld]				
server-id=2				#为当前节点设置一个全局惟的ID号(不能和主节点一样)
 log-bin				#启用二进制日志
 read_only=ON				#限制从数据库为只读,针对supper user无效
 datadir=/data/mysql
 socket=/data/mysql/mysql.sock
 log-error=/data/mysql/mysql.log
 pid-file=/data/mysql/mysql.pid
 [client]
 socket=/data/mysql/mysql.sock

查看主节点当前的二进制文件名及位置:

 在主机点上创建有复制权限的用户账号 :

 在从节点上使用有复制权限的用户账号连接至主服务器,并启动复制线程 

查看从节点IO线程及SQL线程

上面的两个进程都显示YES则表示配置成功

验证

主节点创建数据库和表

从节点查看已同步

主主复制

两个mysql服务器互为主从

在刚刚的主从复制环境下稍加修改即可。

131主机配置文件修改如下:

[mysqld]
server_id=1
log-bin
auto_increment_offset=1 	#设置自动增长的字段的偏移量,即初始值为1
auto_increment_increment=2 	#增长幅度
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock

133主机配置文件修改如下:

[mysqld]
server_id=2
log-bin
auto_increment_offset=2 	#设置自动增长的字段的偏移量,即初始值为2
auto_increment_increment=2 	#增长幅度
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock

 注:其中只有server_id不同和 auto-increment- offset不同
  auto-increment-increment的值应设为整个结构中服务器的总数,此次实验环境只用到两
  台服务器,所以值设为2。

 重启mysql使配置生效;

查看133主机当前的二进制文件名及位置,用于131主机连接时使用:

两个服务器上分别执行创建一个用于主从复制的账号,给与REPLICATION SLAVE权限。

131主机上文已经创建过,且133主机也已经同步,故这里不再创建;

配置连接master的相关信息

在slave中指定master相关参数,并开启slave线程;

在主从复制中133主机已经配置过相关参数,现在只需在131主机上配置即可。

mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.18.133',
    ->  MASTER_USER='repl',
    -> MASTER_PASSWORD='123456',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='centos7-bin.000004', 	#指定133主机的二进制文件
    -> MASTER_LOG_POS=154;			#指定(在master二进制文件中)要开始复制的位置
    
mysql> start slave;

查看从节点IO线程及SQL线程状态为:YES,说明同步开启成功。

最后进行测试验证:

#在131主机执行
mysql> create table test1(id int auto_increment primary key,name char(8));
mysql> insert test1 (name) values('vn');
#在133主机执行
mysql> insert test1 (name) values('ez');
#验证
mysql> select * from test1;
+----+------+
| id | name |
+----+------+
|  1 | vn   |
|  2 | ez   |
+----+------+

至此,主主同步环境也已经实现!

原文地址:https://www.cnblogs.com/quhz/p/14995282.html