MySql教程

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   |
+----+------+

 

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

这篇关于MySQL实现主从复制及主主复制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!