mysql 主從複製的配置 以及 遇到的問題

master配置

1、修改配置文件

vim /etc/my.cnf

2、設置master信息

# 主機唯一id
server-id=1

# 啓動二進制文件
log-bin=mysql-bin

# 設置不需要複製的數據庫(可以設置多個)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema

# 設置需要複製的數據庫
# 需要注意:這配置的數據庫,一定是還沒有創建的數據庫,否則slave無法複製
binlog-ignore-db=[DataBaseName]

# 設置logbin日誌格式
binlog_format=STATEMENT

#參數註解:
#	1、STATEMENT: 記錄每一條進行數據修改的語句
#	2、ROW:記錄的是每一行的數據變更
#	3、MIXED:結合了以上兩種日誌的格式(默認格式)

3、退出,重啓mysql

# 推出 vim 編輯器
esc
:wq

# 重啓 MySQL
systemctl restart mysqld

4、進入mysql客戶端

# 對應的參數 ip 、 用戶名 、 密碼 、端口號
mysql -h192.168.222.222 -uroot -proot -P3306

# 給從機配置一個賬號
# 參數 第一個 test01 分別爲用戶名
# 參數 第二個 test01 分別爲密碼
# 中間 192.168.222.222 是 slave(從機)的ip地址
mysql>
grant replication slave on *.* to 'test01'@'192.168.222.222' identified by '123';

# 查看主機的狀態
mysql> show master status;

在這裏插入圖片描述

  1. File:爲日誌文件
  2. Position:爲從哪裏開始複製
  3. Binlog_Do_DB:需要複製的數據庫
  4. Binlog_Ingnore_DB:不需要複製的數據庫

此時就不要對主機進行操作了,爲什麼這樣,看到最後你就明白了!




slave配置

1、修改配置文件

vim /etc/my.cnf

2、設置slave配置

# 配置從機id
server-id=2

# 啓用中繼日誌
relay-log=mysql-relay

3、退出vim,重啓msyql

# 退出 vim 編輯器
esc
:wq

# 重啓 MySQL
systemctl restart mysqld

4、進入mysql,配置master

	# 如果你之前進行過配置
	# 先結束salve的啓動
	mysql> stop slave;
	# 再重新配置master
	mysql> reset master;

# 端口默認 : 3306
mysql>
change master to master_host='192.168.111.111',
master_port=3306,
master_user='test01',
master_password='123',
master_log_file='mysqlbin.000006',
master_log_pos=310;

# 啓動slave
start slave;

# 查看 slave 的狀態
# \G : 按行顯示
show slave status\G;

出現紅框中的兩個都是yes的時候,你就算是成功了!
在這裏插入圖片描述



遇到的問題

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

在給slave分配用戶的時候,設置的密碼太簡單了,就會出現這個問題。

解決方案:

1、查看密碼管理策略

mysql> SHOW VARIABLES LIKE ‘validate_password%’;

2、設置密碼驗證強度爲低
mysql> set global validate_password_policy=LOW;

參數解釋:
LOW:只驗證長度;
MEDIUM:驗證長度、數字、大小寫、特殊字符;
STRONG:驗證長度、數字、大小寫、特殊字符、字典文件;

3、設置密碼長度(你設置的長度最小爲4)
mysql> set global validate_password_length=6;


Slave_IO_Running: Connecting

這個問題發生在給slave配置完master之後,如下圖:
在這裏插入圖片描述
說明你的slave 沒有連接上你的 master;

可能的原因:
1、master 服務器端口沒開
2、slave 服務器配置 master 的時候端口沒有配置好
3、網絡問題

我的就是因爲我的master服務器中的 mysql 我修改了端口號,但是在slave中沒有配置。
在這裏插入圖片描述
如果是默認3306,紅框中的配置信息是不用填寫的,但是由於我改了端口,所以我就添加了端口了,我把3306改成了我 master 的端口號了。

如果是端口沒開:

# 開端口
firewall-cmd --zone=public --add-port=80/tcp --permanent  

# 重啓防火牆
firewall-cmd --reload  

三言兩語

mysql 的主從複製是追加的方式,和redis的rdb全盤複製方式有所有不同。這也是爲什麼在配置好master的信息之後,插敘master的status之後,最好先不要動的理由,如果此時動了需要需要複製的數據庫,對應的行數就會發生數就會發生變化,導致主從數據庫內容不一致。

它的工作模式是:

  1. slave 從 master 數據庫中複製 logbin日誌
  2. 然後對需要複製數據庫的增刪改操作進行復制操作 (簡單來說,master做了啥改變,我slave也照着你的動作重新做一遍)

注:

binlog日誌:記錄所有的DDL(數據定義語言)和DML(數據操縱語言),不包括查詢語句。



簡單總結,如有紕漏,歡迎大家指出交流!感覺不錯,留個言~ 點個贊,我不挑食!~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章