環境爲2臺ubuntu1604的ECS
先在各數據庫創建emeetdb庫
master1操作
1.修改A數據庫配置文件加入:
[mysqld]
lower_case_table_names=1
server-id = 31
binlog_do_db=emeetdb
replicate-do-db=emeetdb
log-bin=mysql-bin
log-slave-updates
binlog-ignore-db=mysql
slave-skip-errors=all
修改運營商的端口限制,設定固定ip允許訪問3306端口
修改ufw :sudo ufw allow from 121.121.121.37 to any port 3306
重啓mysql
# service mysql restart
建立用於同步的賬戶
# mysql -uroot -p
mysql> grant replication slave on . to ‘root’@‘121.121.121.37’ identified by ‘eMeet2019#’;
建議使用ip限制,不要開放給所有都可以訪問,保障數據庫安全
查看File對應值,並記錄下來
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 449 | emeetdb | mysql | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql> exit
master2操作
sudo ufw allow from 39.120.120.31 to any port 3306`
2.修改slave上的配置文件my.cnf
# vi /etc/my.cnf
[mysqld]
lower_case_table_names=1
server-id = 37
binlog_do_db=emeetdb
replicate-do-db=emeetdb
log-bin=mysql-bin
log-slave-updates
binlog-ignore-db=mysql
slave-skip-errors=all
重啓mysql
# service mysql restart
在從服務器上建立相應的數據庫
# mysql -uroot -p
將39.120.120.31設置爲自己的主服務器
mysql> CHANGE MASTER TO
MASTER_HOST='39.120.120.31',MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=449;
#此處的參數都是前面配置和保存的數值
啓動從服務器複製功能
mysql> start slave;
mysql> show slave status\G;
…
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…
注:
#Slave_IO_Running:連接到主庫,並讀取主庫的日誌到本地,生成本地日誌文件
#Slave_SQL_Running:讀取本地日誌文件,並執行日誌裏的SQL命令。
上面兩個必須都是yes,其中一個NO均屬錯誤
mysql> exit
錯誤一可能是沒有給用戶授權:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'121.121.121.37' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
錯誤二是mysql沒有監聽外部ip訪問
如果要讓mysql監聽到其他的地址,my.cnf中可以將bind-address = 127.0.0.1註釋掉。
或者將bind-address = 0.0.0.0監聽所有的地址,然後重啓mysql服務。
至此,單向主從配置完畢
互爲主從繼續配置如下
--------------------以下在服務器master2上操作
建立用於同步的賬戶
mysql -uroot -p
grant replication slave on . to ‘root’@‘39.120.120.31’ identified by ‘123456’;
查看File對應值,並記錄下來
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 747 | emeetdb | mysql | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
回到作爲從機的master1操作
將121.199.68.37設置爲自己的主服務器
mysql> CHANGE MASTER TO
MASTER_HOST='121.121.121.37',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=747;
啓動從服務器複製功能
mysql> start slave;
mysql> show slave status\G;
…
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…
上面兩個必須都是yes,其中一個NO均屬錯誤
mysql> exit
至此互爲主從配置完畢