一、環(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 |
二、配置流程:
1、50主機(jī)開啟binlog日志
2、50主機(jī)用戶授權(quán)
3、50主機(jī)查看日志信息
4、51主機(jī)配置my.cnf文件
5、51主機(jī)配置主服務(wù)器信息
6、51主機(jī)啟動(dòng)slave進(jìn)程
7、51主機(jī)查看狀態(tài)信息
三、實(shí)操:
第一步:50主機(jī)開啟binlog日志
- 修改配置文件my.cnf
[root@host50 ~]# vim /etc/my.cnf
[mysqld]
server_id=50 # 指定server_id
log_bin=master50 # 定義日志名
:wq
- 重啟服務(wù)生效配置
[root@host50 ~# systemctl restart mysqld
第二步:50主機(jī)用戶授權(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)
第三步:50主機(jī)查看日志信息
- 查看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ī)配置my.cnf文件
- 修改配置文件my.cnf
[root@host51 ~]# vim /etc/my.cnf
[mysqld]
server_id=51 # 指定server_id
:wq
- 重啟服務(wù)生效配置
[root@host51 ~]# systemctl restart mysqld
第五步:51主機(jī)配置主服務(wù)器信息
- 進(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 ; # 偏移量
第六步:51主機(jī)啟動(dòng)slave進(jìn)程
mysql> start slave;
第七步:51主機(jī)查看狀態(tài)信息
- IO線程和 SQL線程必須同時(shí)是YES 狀態(tài)
mysql> show slave status \G
- 驗(yàn)證
# 在主服務(wù)器host52 建庫建表 插入記錄
mysql> create database db1;
mysql> create table db1.t1(id int);
mysql> insert into db1.t1 values(119);
mysql> insert into db1.t1 values(120);
mysql> insert into db1.t1 values(114);
# 從服務(wù)器host53 可以查看到同樣的數(shù)據(jù)
Mysql> select * from db1.t1;
四、補(bǔ)充:
正常的排錯(cuò)方法: 根據(jù) IO線程和 SQL線程的報(bào)錯(cuò)信息排錯(cuò)
mysql> show slave status \G
Last_IO_Error: # IO線程的報(bào)錯(cuò)信息
Last_SQL_Error: # SQL線程的報(bào)錯(cuò)信息
所有錯(cuò)誤的統(tǒng)一解決辦法:把slave角色的服務(wù)器恢復(fù)為獨(dú)立的數(shù)據(jù)庫服務(wù)器,重新配置為從服務(wù)器。
[root@host50 ~]# systemctl stop mysqld
[root@host50 ~]# cd /var/lib/mysql/
[root@host50 ~]# rm -rf master.info
[root@host50 ~]# rm -rf *-relay-bin.*
[root@host50 ~]# rm -rf relay-log.info
[root@host50 ~]# systemctl start mysqld
| 文件名 | 說明 |
|---|---|
| master.info | 保存主服務(wù)器信息 |
| relay-log.info | 記錄中繼日志信息 |
| 主機(jī)名-relay-bin.xxxxxx | 中繼日志文件 |
| 主機(jī)名-relay-bin.index | 索引文件 |