1. 程式人生 > >Mysql-高可用集群[主從單一模式-binlog](二)

Mysql-高可用集群[主從單一模式-binlog](二)

節點 log 索引 image generate 端口 fir firewall nod

操作過程:
  • 【主,從節點】分別安裝mysql服務
  • 【主,從節點】設置mysql常用配置
  • 1.添加管理員用戶,設置:server-id
  • 2.開啟binlog,同步用戶
  • 3.添加防火墻規則
  • 【從節點】同步主節點
  • 1.設置主節點同步信息:文件,索引位置
  • 2.查看狀態
  • 3.開始同步
  • 測試同步操作
  • 從節點失效後重新同步

節點IP:

  • 主節點: 192.168.2.40
  • 從節點: 192.168.2.41

1.【主,從節點】分別安裝mysql服務:

下載安裝: Mysql5.7,頁面:
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
下載地址(我的操作系統centos):

https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar
需要組建:
技術分享圖片

// 卸載-mariadb
        rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
// 上傳至服務器:
        /usr/local/src/mysql-5.7.1
// 安裝
        rpm -ivh *.rpm
// 設置服務自啟動,啟動
    systemctl enable mysqld && systemctl start mysqld
// mysql-5.7會把初始化密碼寫在日誌文件中: 
        cat /var/log/mysqld.log | grep password
        A temporary password is generated for [email protected]: %!CpVaxli5#s
// 測試登錄
    mysql -uroot -p
    %!CpVaxli5#s

2.【主,從節點】設置mysql常用配置,添加管理員用戶,設置:server-id

2-1.【主,從節點】配置服務:

vim /etc/my.cnf
// 字符集
character_set_server = utf8
// 節點ID:主,從要區別開不能一致
server-id = 40
// 【主節點】開啟binlog
log-bin = mysql-bin
// 密碼安全級別驗證取消
validate_password = OFF

// 重啟服務
systemctl restart mysqld

2-2.【主,從節點】添加用戶:

// 登錄
mysql -uroot -p
%!CpVaxli5#s

// 更改密碼
set password for [email protected]=password(‘Aa123456‘);

// 添加外部訪問用戶
GRANT ALL PRIVILEGES ON *.* TO ‘myuser‘@‘%‘ IDENTIFIED BY ‘Aa123456‘ WITH GRANT OPTION;
FLUSH PRIVILEGES;

// 【主節點】,添加同步用戶
GRANT REPLICATION SLAVE ON *.* to ‘repl‘@‘%‘ identified by ‘Aa123456‘;

2-3.【主,從節點】開啟端口,測試鏈接:

// 允許3306端口,並重啟防火墻生效
firewall-cmd --permanent --add-port=3306/tcp && firewall-cmd --reload

3.【從節點】同步主節點

3-1.【主節點】查看binlog信息

mysql -uroot -pAa123456
show master status;
![](https://s1.51cto.com/images/blog/201904/05/e20a25e3c7881d6a2a752f1a14db15f9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

3-2.【從節點】設置同步

// 設置【主節點】同步信息
mysql -uroot -pAa123456
change master to master_host=‘192.168.2.40‘,master_port=3306,master_user=‘repl‘,master_password=‘Aa123456‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=154;
// 查看同步狀態:
show slave status \G;
![](https://s1.51cto.com/images/blog/201904/05/25e790b30b51252c13a4d7613e13d269.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
// 開始同步:
start slave;
// 查看同步狀態:
show slave status \G;
    Slave_IO_Running: YES
    Slave_SQL_Running: YES
// 查看線程(可以看到這兩個線程: 等待主服務器更新事件,等待讀取本地日誌寫入數據):
show processlist;

4.測試主從同步

// 1.遠程連接主數據庫:創建數據,表,添加數據
// 2.從數據庫看是否已經同步

5.從節點失效後重新同步

# 【主節點】
reset master;
show master status \G;

# 【從節點】
stop slave;
reset slave;
change master to master_host=‘192.168.2.40‘,master_port=3306,master_user=‘repl‘,master_password=‘Aa123456‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=154;
start slave;

# 查看同步狀態
show slave status \G;

# 【主節點】加入數據測試從同步

# 【從節點】如果是虛擬機克隆的,需要註意一下幾點:
1.更改IP
2.刪除: /var/lib/mysql/auto.conf,uuid保存文件,重啟的時候沒有會自動生成
3.更改: /etc/my.cnf 
    server-id
4.重啟mysqld服務:
    systemctl restart mysqld

Mysql-高可用集群[主從單一模式-binlog](二)