配置MySQL Master-Master復(fù)制
概述
我們要在兩臺(tái)主機(jī)上設(shè)置Mysql雙主復(fù)制架構(gòu)宿刮,假設(shè)兩臺(tái)服務(wù)器分別為Server C和Server D
Server C: 3.3.3.3
Server D: 4.4.4.4
Step 1 - 在Server C上安裝Mysql
我的主機(jī)系統(tǒng)是Centos7
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum update
sudo yum install mysql-server
修改Mysql配置文件/etc/my.cnf捻艳,將下面列出幾項(xiàng)配置改為如下配置:
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = example
# bind-address = 127.0.0.1
第一行唯一標(biāo)識(shí)我們的主機(jī)
第二行表示我們對(duì)數(shù)據(jù)庫(kù)和表做的操作都會(huì)被記錄
第三行設(shè)置我們需要復(fù)制的數(shù)據(jù)庫(kù)划纽,可以指定多個(gè),這里為了簡(jiǎn)單事例,只寫一個(gè)
最后一行表示Mysql接受外網(wǎng)的連接
現(xiàn)在枷畏,重啟Mysql
sudo systemctl restart mysqld
以root用戶登錄
mysql -u root -p
進(jìn)入之后,建立一個(gè)用于復(fù)制數(shù)據(jù)的用戶虱饿,我們起名叫“replicator”拥诡,password隨意指定
create user 'replicator'@'%' identified by 'password';
將復(fù)制權(quán)限賦予這個(gè)用戶
grant replication slave on *.* to 'replicator'@'%';
復(fù)制權(quán)限不能以數(shù)據(jù)庫(kù)粒度賦予触趴,用戶只能根據(jù)配置文件中制定的來決定復(fù)制哪些數(shù)據(jù)庫(kù)
執(zhí)行下面的命令
show master status;
下面的輸出在配置Server D的時(shí)候要用到
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 120 | example | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
Step 2 - 為Server D安裝和配置Mysql
執(zhí)行與上面同樣的步驟,直到下面這條命令(包含)
grant replication slave on *.* to 'replicator'@'%';
注意, server-id的配置項(xiàng)不能再用1了, 改為2
然后渴肉,上面的輸出就要用到了冗懦,在Mysql的命令行里,執(zhí)行下面的命令:
stop slave;
CHANGE MASTER TO MASTER_HOST = '3.3.3.3', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 120;
start slave;
上面的Host仇祭,password披蕉,log_file,pos等乌奇,換成你自己的
然后没讲,同樣的,執(zhí)行下面的命令
SHOW MASTER STATUS;
輸出類似這樣的
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 107 | example | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
這些內(nèi)容我們?cè)诨仡^配置Server C的時(shí)候要用到
Step 3 - 完成Server C的配置
回到Server C礁苗,登入Mysql爬凑,執(zhí)行下面命令
stop slave;
CHANGE MASTER TO MASTER_HOST = '4.4.4.4', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000004', MASTER_LOG_POS = 107;
start slave;
上面的Host,password试伙,log_file贰谣,pos等,換成你自己的
配置就完成了迁霎,下面我們測(cè)試一下是否成功
Step 4 - 測(cè)試Master-Master配置
在Server C上創(chuàng)建example數(shù)據(jù)庫(kù)
create database example;
然后建張表
create table example.dummy (`id` varchar(10));
到Server D上看一下
show tables in example;
輸出如下
+-------------------+
| Tables_in_example |
+-------------------+
| dummy |
+-------------------+
1 row in set (0.00 sec)
下面我們?cè)赟erver D上刪除這個(gè)表
DROP TABLE dummy;
回到Server C上吱抚, show tables,發(fā)現(xiàn)沒有了
Empty set (0.00 sec)
至此考廉,配置完畢