linux下mysql主从复制

2019-12-18 18:00:55 浏览数 (1)

mysql主从复制主要作用是为了降低主服务器mysql的读压力。

文章背景:

1、在本地搭建两个linux虚拟机,其主服务器ip为192.168.0.1,从服务器ip为192.168.0.2。

2、主服务器只搭建了mysql,从服务器搭建了lnmp测试环境。

注明:测试主从mysql服务器都可以正常运行连接。

进行主从复制需要以下几个步骤:

1、开放主从服务器的3306端口。

2、主服务器mysql配置文件my.cnf中[mysqld]后配置

basedir = /usr/local/lnmp/mysql-5.7

datadir = /usr/local/lnmp/mysql-5.7/data

port = 3306

server_id = 1

socket = /usr/local/lnmp/mysql-5.7/mysql.sock

log-bin = mysql-bin

必须配置server_id与log-bin,主从服务器的server_id必须设置且唯一。log-bin为开启二进制日志。

配置后重启。

3、主服务创建用户。

可以通过SQLlog等工具创建用户。

用户名为:test (一会需要用到),主机为%或者192.168.0.%(前者为任意ip可以连接,后者为限制192.168.0.*号段连接),密码为,test(一会需要用到),并添加全局权限REPLICATION SLAVE (小写为replication slave);

4、从主服务导出测试数据库test,然后在从数据库中导入测试数据库test。

5、数据库连接之后执行sql:show master status;获取FILE为mysql-bin.000004(一会需要用到),position为1230(一会需要用到);

6、从服务器mysql配置文件my.cnf中[mysqld]后配置

basedir = /usr/local/lnmp/mysql-5.7

datadir = /usr/local/lnmp/mysql-5.7/data

port = 3306

server_id = 2

socket = /usr/local/lnmp/mysql-5.7/mysql.sock

log-bin = mysql-bin

#replicate-do-db=test #指定数据库被复制

#replicate-ignore-db=test #指定数据库不被复制

必须配置server_id,主从服务器的server_id必须设置且唯一。log-bin为开启二进制日志。

7、重启从服务器mysql,使用命令mysql -h127.0.0.1 -uroot -p后输入密码连接mysql。

执行sql: stop slave;(如果之前配置过主从则关闭之前,否则暴露一个警告可以忽略)

执行sql:change master to master_host='192.168.0.1'(主服务器ip), master_user='test'(刚刚设置的账号),master_password='test'(刚刚设置的密码),master_log_file='mysql-bin.000004'(show master status;获取的FILE),master_log_pos=2022(show master status;获取的position);(本sql为设置主从配置)

执行sql:start slave;(开启主从配置)

8、查看主从复制是否正常。

mysql命令行中执行:show slave status G

查看Slave_IO_Running与Slave_SQL_Running,当两个参数的状态都是yes如下:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

则证明mysql主从复制状态为正常运行的状态。

主从配置完成,现在在主服务中进行添加,修改,删除操作,从服务器中也会做相应的操作。

警告:主从复制的增加,修改,删除操作只能在主服务进行,如果再从服务器进行了添加,修改,删除操作,则主从配置失效。

注明:笔者在it行业的工作年限不长,如果有什么不对的,希望大家指出。本文小括号()内为注释,辅助说明。

0 人点赞