天天看點

linux mysql 資料庫同步工具_linux下mysql主從複制,實作資料庫同步

運作環境:

檢視linux版本指令:lsb_release -a

主伺服器:centos release 6.5 mysql 5.6.10-log  IP:172.17.200.25

從伺服器:centos release 6.5 mysql 5.6.10-log  IP:172.17.200.26

主伺服器dashi資料庫

mysql預設配置檔案,如不特殊指定預設為/etc/my.cnf

mysql配置檔案查找順序:/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

我是預設設定 /etc/my.cnf

進入主服務 msyql -uroot -p

一:主服務

1.1、建立一個複制使用者dashi,具有replication slave 權限。

mysql>grant replication slave on *.* to 'dashi'@'172.17.200.26' identified by 'dashi';

mysql>flush privileges;

1.2、編輯my.cnf檔案

vim /etc/my.cnf

增加 server-id=107

log-bin=bin.log 檔案路徑自己定(推薦絕對路徑)

1.3 重新開機mysql

service mysqld restart

1.4、設定讀鎖

mysql>flush tables with read lock;

1.5、得到binlog日志檔案名和偏移量(此處記住File名稱和Position值,後面slave伺服器配置時需要用到)

mysql> show master status;

+------------+------------+--------------+--------------------------------------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------+------------+--------------+--------------------------------------------------+-------------------+

| bin.000031 | 1011406487 | | information_schema,mysql,performance_schema,test | |

+------------+------------+--------------+--------------------------------------------------+-------------------+

1 row in set (0.00 sec)

1.6、備份要同步的資料庫

mysqldump -uroot -p  test>test.sql

1.7解鎖

mysql>unlock tables;

二:從伺服器(172.17.200.26)

2.1、編輯my.cnf檔案

vim /etc/my.cnf

增加 server-id=2

2.2 重新開機mysql

service mysqld restart

2.3、對從資料庫進行相應設定

此處要注意logfile的名稱和position的值,其餘host、user和password為主資料庫設定的賬号和密碼

mysql> stop slave;

Query OK, 0 rows affected (0.00 sec)

mysql> change master to

-> master_host='172.17.200.25',

-> master_user='dashi',

-> master_password='dashi',

-> master_log_file='bin.log.000001',

-> master_log_pos=713;

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;

在這裡主要是看:

Slave_IO_Running=Yes

Slave_SQL_Running=Yes

三、測試:

上述項配置完以後可檢視master和slave上線程的狀态。在master上,你可以看到slave的I/O線程建立的連接配接:在master上輸入show processlist\G;

mysql> show processlist \G;

*************************** 1. row ***************************

Id: 10865

User: dashi

Host: 172.17.200.25:37369

db: dashi

Command: Sleep

Time: 7

State:

Info: NULL

*************************** 2. row ***************************

Id: 10866

User: dashi

Host: 172.17.200.25:37370

db: dashi

Command: Sleep

Time: 7

State:

Info: NULL

*************************** 3. row ***************************

Id: 10873

User: dashi

Host: 172.17.200.26:37928

db: dashi

Command: Execute

Time: 1

State: Sending data

Info: select count(1) from trade_click where link=?

*************************** 4. row ***************************

Id: 10874

User: dashi

Host: 172.17.200.26:37929

db: dashi

Command: Sleep

Time: 9

State:

Info: NULL

*************************** 5. row ***************************

Id: 10882

User: dashi

Host: 172.17.200.26:37962

db: dashi

Command: Sleep

Time: 78

State:

Info: NULL

ERROR:

No query specified

3.1、在主資料庫:192.168.0.107上添加新資料

3.2、在從庫查找記錄,是否存在

四:總結

主伺服器master記錄資料庫記錄檔到Binary log,從伺服器開啟i/o線程将二進制日志記錄的操作同步到relay log(存在從伺服器的緩存中),另外sql線程将relay log日志記錄的操作在從伺服器執行,進而達到主從複制。