詳解Mysql主從同步配置示例代碼

這篇文章主要介紹了詳解mysql主從同步實戰,實例分析了mysql主從同步的原理和實現,非常具有實用價值,需要的朋友可以參考下。

1、Introduction

之前寫過一篇文章:Mysql主從同步的原理。

相信看過這篇文章的童鞋,都摩拳擦掌,躍躍一試了吧?

今天我們就來一次mysql主從同步實戰!

2、環境說明

os:ubuntu16.04

mysql:5.7.17

下面的實戰演練,都是基于上面的環境。當然,其他環境也大同小異。

3、進入實戰

工具

2臺機器:

master IP:192.168.33.22

slave? IP:192.168.33.33

master機器上的操作

1、更改mysql

我們找到文件 /etc/mysql/mysql.conf.d/mysqld.cnf。

配置如下:

bind-address?=?192.168.33.22?#your?master?ip  server-id?=?1?#在master-slave架構中,每臺機器節點都需要有唯一的server-id  log_bin?=?/var/log/mysql/mysql-bin.log?#開啟binlog

2、重啟mysql,以使配置文件生效。

sudo?systemctl?restart?mysql

3、創建主從同步的mysql user。

$?mysql?-u?root?-p  Password:    ##創建slave1用戶,并指定該用戶只能在主機192.168.33.33上登錄。  mysql>?CREATE?USER?'slave1'@'192.168.33.33'?IDENTIFIED?BY?'slavepass';  Query?OK,?0?rows?affected?(0.00?sec)    ##為slave1賦予REPLICATION?SLAVE權限。  mysql>?GRANT?REPLICATION?SLAVE?ON?*.*?TO?'slave1'@'192.168.33.33';  Query?OK,?0?rows?affected?(0.00?sec)

4、為MYSQL加讀鎖

為了主庫與從庫的數據保持一致,我們先為mysql加入讀鎖,使其變為只讀。

mysql>?FLUSH?TABLES?WITH?READ?LOCK;  Query?OK,?0?rows?affected?(0.00?sec)

5、記錄下來MASTER REPLICATION LOG 的位置

該信息稍后會用到。

mysql>?SHOW?MASTER?STATUS;  +------------------+----------+--------------+------------------+-------------------+  |?File????|?Position?|?Binlog_Do_DB?|?Binlog_Ignore_DB?|?Executed_Gtid_Set?|  +------------------+----------+--------------+------------------+-------------------+  |?mysql-bin.000001?|??613?|????|?????|?????|  +------------------+----------+--------------+------------------+-------------------+  1?row?in?set?(0.00?sec)

6、將master DB中現有的數據信息導出

$?mysqldump?-u?root?-p?--all-databases?--master-data?>?dbdump.sql

7、接觸master DB的讀鎖

mysql>?UNLOCK?TABLES;

8、將步驟6中的dbdump.sql文件mysql到slave

scp?dbdump.sql?ubuntu@192.168.33.33:/home/ubuntu

slave機器上的操作

1、更改配置文件

我們找到文件 /etc/mysql/mysql.conf.d/mysqld.cnf。

更改配置如下:

bind-address?=?192.168.33.33?#your?slave?ip  server-id?=?2?#master-slave結構中,唯一的server-id  log_bin?=?/var/log/mysql/mysql-bin.log?#開啟binlog

2、重啟mysql,以使配置文件生效

sudo?systemctl?restart?mysql

3、導入從master DB。 導出的dbdump.sql文件,以使master-slave數據一致

$?mysql?-u?root?-p?<p>4、使slave與master建立連接,從而同步</p><p class="jb51code"><br></p><pre class="brush:sql;">$?mysql?-u?root?-p  Password:    mysql&gt;?STOP?SLAVE;  Query?OK,?0?rows?affected,?1?warning?(0.00?sec)    mysql&gt;?CHANGE?MASTER?TO  ?-&gt;?MASTER_HOST='192.168.33.22',  ?-&gt;?MASTER_USER='slave1',  ?-&gt;?MASTER_PASSWORD='slavepass',  ?-&gt;?MASTER_LOG_FILE='mysql-bin.000001',  ?-&gt;?MASTER_LOG_POS=613;  Query?OK,?0?rows?affected,?2?warnings?(0.01?sec)    mysql&gt;?START?SLAVE;  Query?OK,?0?rows?affected?(0.00?sec)

MASTER_LOG_FILE=’mysql-bin.000001’與MASTER_LOG_POS=613的值,是從上面的 SHOW MASTER STATUS 得到的。

經過如此設置之后,就可以進行master-slave同步了~

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享