MGR安裝


二、環境准備

主機名 IP地址 角色
node2.com 172.16.8.101 primary
node3.com 172.16.8.53 seconde
node3.com 172.16.8.68 seconde

操作系統:CentOS Linux release 7.2.1511
MySQL版本:mysql-5.7.26-linux-glibc2.12-x86_64
MySQL Router版本:mysql-router-8.0.17-linux-glibc2.12-x86_64
MySQL Shell版本:mysql-shell-8.0.17-linux-glibc2.12-x86-64bit

三、MySQL安裝

注意: 以下需要在三台機器上分別安裝
本次安裝為一主兩從模式

1. 關閉防火牆

# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# cat /etc/sysconfig/selinux
## 如果上一步查的SELINUX=disabled則下一步用sed替換不用執行
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# getenforce

2. 軟件包上傳、解壓

# cd /software/
# tar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
# cd /usr/local/
# ln -s mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz mysql

3. 創建mysql數據目錄,增加系統用戶mysql

# mkdir -p /data/mysql/data/3306
# useradd mysql
# chown -R mysql:mysql /data/mysql/data/3306
# chown -R mysql:mysql /usr/local/mysql*

4. 增加mysql的配置文件

    vim /etc/my.cnf

4.1 node2的配置文件內容如下

[mysqld]
basedir=/usr/local/mysql/
datadir=/data/mysql/data/3306
port=3306
socket=/tmp/mysql.sock

server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "172.16.8.101:33060"
loose-group_replication_group_seeds= "172.16.8.101:33060,172.16.8.53:33060,172.16.8.68:33060"
loose-group_replication_bootstrap_group=off

4.2 node3的配置文件內容如下

[mysqld]
basedir=/usr/local/mysql/
datadir=/data/mysql/data/3306
port=3306
socket=/tmp/mysql.sock

server_id=2
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "172.16.8.53:33060"
loose-group_replication_group_seeds= "172.16.8.101:33060,172.16.8.53:33060,172.16.8.68:33060"
loose-group_replication_bootstrap_group=off

4.3 node4的配置文件內容如下

[mysqld]
basedir=/usr/local/mysql/
datadir=/data/mysql/data/3306
port=3306
socket=/tmp/mysql.sock

server_id=3
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "172.16.8.68:33060"
loose-group_replication_group_seeds= "172.16.8.101:33060,172.16.8.53:33060,172.16.8.68:33060"
loose-group_replication_bootstrap_group=off

說明: 上面的三個配置文件省略了所有不必要的配置項,但是看起來還是有點多,這些都是mgr環境要求的。

  • server_id:每個實例都要不要樣
  • loose-group_replication_group_name:為mgr高可用組起一個名字,這個名字一定要是uuid格式的。
  • loose-group_replication_local_address:mgr各實例之前都是要進行通信的、這個配置項設置的就是本實例所監聽的ip:端口
  • loose-group_replication_group_seeds:各mgr實例所監聽的ip:端口信息
  • Group Replication是要根據GTID(Global Transaction Identifiers)來進行同步的,所以需要開啟GTID

5. 初始化mysql數據庫

# cd /usr/local/mysql/
# ./bin/mysqld --defaults-file=/etc/my.cnf --datadir=/data/mysql/data/3306/ --user=mysql --initialize-insecure

--initialize-insecure:無密碼初始化MySQL

6. 配置mysql與systemd結合

說明: CentOS7.x下與服務啟動相關的腳本不在是7以下的/etc/init.d/目錄的下腳本,而是/usr/lib/systemd/system/目錄
配置systemd相關的配置文件/usr/lib/systemd/system/mysql.service

vim /usr/lib/systemd/system/mysql.service

輸入如下內容

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
#LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1

7. 啟動MySQL,並把MySQL加入開機啟動

# systemctl enable mysql
# systemctl start mysql

8. 配置環境變量

# echo 'PATH=/usr/local/mysql/bin/:$PATH' >>/etc/profile
# source /etc/profile

9. 添加三台機器的DNS解析

# echo "172.16.8.101  node2.com" >> /etc/hosts
# echo "172.16.8.53  node3.com" >> /etc/hosts
# echo "172.16.8.68  node4.com" >> /etc/hosts

10. 測試登錄

    # mysql -uroot -p

四、MGR配置

4.1配置mgr的第一個節點:

mgr中所有的結點都屬於一個邏輯上的組、這個組就像是QQ群一樣,是由群主建起來的,有了這個上組之后,其它的結點就可以加入到這個組中來了。onode2.com來建群,以下步驟在node2.com主機上的mysql中執行

4.1.1 創建用於復制的用戶

mysql> set sql_log_bin=0;
mysql> create user mgruser@'%' identified by '123456';
mysql> grant replication slave,replication client on *.* to mgruser@'%';
mysql> create user mgruser@'127.0.0.1' identified by '123456';
mysql> grant replication slave,replication client on *.* to mgruser@'127.0.0.1';
mysql> create user mgruser@'localhost' identified by '123456';
mysql> grant replication slave,replication client on *.* to mgruser@'localhost';
mysql> set sql_log_bin=1;

4.1.2 配置復制所使用的用戶

mysql> change master to 
    -> master_user='mgruser',
    -> master_password='123456'
    -> for channel 'group_replication_recovery';

4.1.3 安裝mysql group replication插件

mysql> install plugin group_replication soname 'group_replication.so';

4.1.4 建個群(官方點的說法就是初始化一個復制組)

mysql> set global group_replication_bootstrap_group=on;
mysql> start group_replication;
mysql> set global group_replication_bootstrap_group=off;

說明:

  • global group_replication_bootstrap_group=on:代表這個節點是主節點

4.2配置mgr的第二個節點:

第二個結點和第一個結點唯一的不同在於它不在要自己去建一個群了,它只要加入第一個結點建的群就可以了,以下步驟在node3.com主機上的mysql中執行

4.2.1 創建用於復制的用戶

mysql> set sql_log_bin=0;
mysql> create user mgruser@'%' identified by '123456';
mysql> grant replication slave,replication client on *.* to mgruser@'%';
mysql> create user mgruser@'127.0.0.1' identified by '123456';
mysql> grant replication slave,replication client on *.* to mgruser@'127.0.0.1';
mysql> create user mgruser@'localhost' identified by '123456';
mysql> grant replication slave,replication client on *.* to mgruser@'localhost';
mysql> set sql_log_bin=1;

4.2.2 配置復制所要的用戶

mysql> change master to
-> master_user='mgruser',
-> master_password='123456'
-> for channel 'group_replication_recovery';

4.2.3 安裝組復制插件

mysql> install plugin group_replication soname 'group_replication.so';

4.2.4 加入前面創建好的復制組

mysql> start group_replication;

4.3配置mgr的其它結點:

邏輯上第二個結點與第三、第四、第五...等等結點有着一樣的邏輯角色,就也是說它們都不是群主,所以它們的配置方式和第二個結點是一樣的,所以不在詳細列舉每一步的配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM