MySQL的集群化部署具備高可用性,可以更好的保護(hù)業(yè)務(wù)系統(tǒng)的正常運(yùn)作,所以這種模式是生產(chǎn)環(huán)境必備的安裝模式。MySQL的集群化部署有多種模式,本文主要介紹一主多從的模式。
由于是生產(chǎn)環(huán)境的集群部署,大多都采用Linux系的系統(tǒng),所以這里主要就以Linux系統(tǒng)為例,不再介紹Windows系統(tǒng)的搭建過程。
#環(huán)境準(zhǔn)備
Ip地址 | 主機(jī)名 | 角色 | 數(shù)據(jù)管理員密碼 | 公共配置 |
---|---|---|---|---|
192.168.88.50 | Host50 | Master服務(wù)器 | 123qqq…A | 關(guān)閉防火墻 禁用selinux |
192.168.88.51 | Host51 | Slave服務(wù)器 | 123qqq…A | 關(guān)閉防火墻 禁用selinux |
192.168.88.52 | Host52 | Slave服務(wù)器 | 123qqq…A | 關(guān)閉防火墻 禁用selinux |
#配置流程
1、50主機(jī)配置Master 2、51主機(jī)配置Slave 3、備份50主機(jī)的sql到52主機(jī)上 4、52主機(jī)配置Slave
#實(shí)際操作
#第一步:50主機(jī)配置Master
- 修改配置文件
my.cnf
[root@host50 ~]# vim /etc/my.cnf
[mysqld]
server_id=50 # 指定server_id
log_bin=master50 # 定義日志名
:wq
- 重啟服務(wù)生效配置
[root@host50 ~]# systemctl restart mysqld
- 用戶授權(quán)
# 進(jìn)入mysql服務(wù)
[root@host50 ~]# mysql -uroot -p123qqq...A
# 創(chuàng)建用戶并授權(quán)
mysql> grant replication slave on *.*
-> to repluser@"%" identified by "123qqq…A";
Query OK, 0 rows affected, 1 warning (0.00 sec)
- 查看master信息,目的是查看File和Position的值
mysql> show master status;
+-----------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| master50.000001 | 154 | | | |
+-----------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#第二步:51主機(jī)配置Slave
- 修改配置文件
my.cnf
[root@host51 ~]# vim /etc/my.cnf
[mysqld]
server_id=51 # 指定server_id
:wq
- 重啟服務(wù)生效配置
[root@host51 ~# systemctl restart mysqld
- 進(jìn)入mysql服務(wù),切記要保持主從數(shù)據(jù)庫數(shù)據(jù)一致
[root@host51 ~]# mysql -uroot -p123qqq...A
- 指定主服務(wù)器信息
mysql> change master to
-> master_host="192.168.88.50", # 主服務(wù)器Ip地址
-> master_user="repluser" , # 主服務(wù)器添加用戶名
-> master_password="123qqq...A", # 用戶密碼
-> master_log_file="master50.000001" , # 主服務(wù)器binlog日志名
-> master_log_pos=154 ; # 偏移量
- 啟動(dòng)slave進(jìn)程
mysql> start slave;
- 查看狀態(tài)信息(IO線程和 SQL線程必須同時(shí)是YES 狀態(tài))
mysql> show slave status \G
#第三步:備份50主機(jī)的sql到52主機(jī)上
- 備份50主機(jī)的sql
--master-data
完全備份完成時(shí),把保存命令使用的日志名和偏移量保存到備份文件里
[root@host50 ~]# mysqldump -uroot –p123qqq…A
--master-data -B db1 > /root/db1.sql
[root@host50 ~]# scp /root/db1.sql 192.168.88.52:/opt/
- 52主機(jī)使用備份文件恢復(fù)數(shù)據(jù)
[root@host52 ~]# mysql -uroot -p123qqq...A < /opt/db1.sql
# 進(jìn)入sql環(huán)境
[root@host52 ~]# mysql -uroot -p123qqq...A
# 查看導(dǎo)入是否完成
Mysql> select count(*) from db1.t1;
#第四步:52主機(jī)配置Slave
- 在備份文件里查看日志名和偏移量
[root@host52 ~]# grep master50 /opt/db1.sql
CHANGE MASTER TO MASTER_LOG_FILE='master50.000001',
MASTER_LOG_POS=2000;
- 管理員root登錄
[root@host54 ~]# mysql -uroot -p123qqq...A
# 指定主服務(wù)器信息
mysql> change master to
-> master_host="192.168.88.50", # 主服務(wù)器Ip地址
-> master_user="repluser" , # 主服務(wù)器添加用戶名
-> master_password="123qqq...A", # 用戶密碼
-> master_log_file="master50.000001" , # 主服務(wù)器binlog日志名
-> master_log_pos=2000 ; # 偏移量
- 啟動(dòng)slave進(jìn)程
mysql> start slave;
- 查看狀態(tài) (IO線程和 SQL線程必須同時(shí)是YES 狀態(tài))
mysql> show slave status \G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
- 測試一主多從的配置
# 在主服務(wù)器50插入新數(shù)據(jù)
mysql> insert into db1.t1 values(99988);
# 兩臺(tái)從服務(wù)器可以看到一樣的數(shù)據(jù)
[root@host51 mysql]# mysql -uroot -p123qqq...A
Mysql> select * from db1.t1;
[root@host52 mysql]# mysql -uroot -p123qqq...A
Mysql> select * from db1.t1;
本文轉(zhuǎn)載自:https://www.jianshu.com/p/995f6a69b497