详解Mysql主从同步配置实战
1、Introduction
之前写过一篇文章:Mysql主从同步的原理。
相信看过这篇文章的童鞋,都摩拳擦掌,跃跃一试了吧?
今天我们就来一次mysql主从同步实战!
2、环境说明
os:ubuntu16.04
mysql:5.7.17
下面的实战演练,都是基于上面的环境。当然,其他环境也大同小异。
3、进入实战
工具
2台机器:
masterIP:192.168.33.22
slave IP:192.168.33.33
master机器上的操作
1、更改配置文件
我们找到文件/etc/mysql/mysql.conf.d/mysqld.cnf。
配置如下:
bind-address=192.168.33.22#yourmasterip server-id=1#在master-slave架构中,每台机器节点都需要有唯一的server-id log_bin=/var/log/mysql/mysql-bin.log#开启binlog
2、重启mysql,以使配置文件生效。
sudosystemctlrestartmysql
3、创建主从同步的mysqluser。
$mysql-uroot-p Password: ##创建slave1用户,并指定该用户只能在主机192.168.33.33上登录。 mysql>CREATEUSER'slave1'@'192.168.33.33'IDENTIFIEDBY'slavepass'; QueryOK,0rowsaffected(0.00sec) ##为slave1赋予REPLICATIONSLAVE权限。 mysql>GRANTREPLICATIONSLAVEON*.*TO'slave1'@'192.168.33.33'; QueryOK,0rowsaffected(0.00sec)
4、为MYSQL加读锁
为了主库与从库的数据保持一致,我们先为mysql加入读锁,使其变为只读。
mysql>FLUSHTABLESWITHREADLOCK; QueryOK,0rowsaffected(0.00sec)
5、记录下来MASTERREPLICATIONLOG的位置
该信息稍后会用到。
mysql>SHOWMASTERSTATUS; +------------------+----------+--------------+------------------+-------------------+ |File|Position|Binlog_Do_DB|Binlog_Ignore_DB|Executed_Gtid_Set| +------------------+----------+--------------+------------------+-------------------+ |mysql-bin.000001|613|||| +------------------+----------+--------------+------------------+-------------------+ 1rowinset(0.00sec)
6、将masterDB中现有的数据信息导出
$mysqldump-uroot-p--all-databases--master-data>dbdump.sql
7、接触masterDB的读锁
mysql>UNLOCKTABLES;
8、将步骤6中的dbdump.sql文件copy到slave
scpdbdump.sqlubuntu@192.168.33.33:/home/ubuntu
slave机器上的操作
1、更改配置文件
我们找到文件/etc/mysql/mysql.conf.d/mysqld.cnf。
更改配置如下:
bind-address=192.168.33.33#yourslaveip server-id=2#master-slave结构中,唯一的server-id log_bin=/var/log/mysql/mysql-bin.log#开启binlog
2、重启mysql,以使配置文件生效
sudosystemctlrestartmysql
3、导入从masterDB。导出的dbdump.sql文件,以使master-slave数据一致
$mysql-uroot-p4、使slave与master建立连接,从而同步
$mysql-uroot-p Password: mysql>STOPSLAVE; QueryOK,0rowsaffected,1warning(0.00sec) mysql>CHANGEMASTERTO ->MASTER_HOST='192.168.33.22', ->MASTER_USER='slave1', ->MASTER_PASSWORD='slavepass', ->MASTER_LOG_FILE='mysql-bin.000001', ->MASTER_LOG_POS=613; QueryOK,0rowsaffected,2warnings(0.01sec) mysql>STARTSLAVE; QueryOK,0rowsaffected(0.00sec)MASTER_LOG_FILE='mysql-bin.000001'与MASTER_LOG_POS=613的值,是从上面的SHOWMASTERSTATUS得到的。
经过如此设置之后,就可以进行master-slave同步了~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。