0
点赞
收藏
分享

微信扫一扫

linux下mysql主从复制

攻城狮Chova 2022-03-30 阅读 45

说明

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

环境

  • 1.在本地搭建两个linux虚拟机,其主服务器ip为192.168.0.1,从服务器ip为192.168.0.2。
  • 2.主服务器只搭建了mysql,从服务器搭建了lnmp测试环境。

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

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主从复制状态为正常运行的状态。

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

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

相关推荐

0 条评论