实验环境
node | Master | Slave |
---|---|---|
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 | +----+------+
至此,主主同步环境也已经实现!