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