mysql8.0.33配置MGR

sudo cat > /etc/hosts <<-'EOF'
192.168.89.98 n0
192.168.89.68 n1
192.168.10.188 n2
EOF

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --permanent --zone=public --add-port=33061/tcp
sudo firewall-cmd --reload
 sudo firewall-cmd --zone=public --list-ports


# 第1台服务器
hostnamectl set-hostname n0
# 第2台服务器
hostnamectl set-hostname n1
# 第3台服务器
hostnamectl set-hostname n2

yum install libaio
mkdir /home/ssd
cd /home/ssd/

tar -xvf mysql-8.0.33-el7-x86_64.tar
tar -zxvf mysql-8.0.33-el7-x86_64.tar.gz
mv mysql-8.0.33-el7-x86_64 mysql

mkdir /home/ssd/mysql_data/
rm -rf /home/ssd/mysql_data/*
cd mysql
mkdir /home/ssd/mysql/logs/
mkdir /home/ssd/mysql/plugin
cd /home/ssd/mysql/logs/
vim error.log
vim slow.log

chmod -R 777 /home/ssd
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /home/ssd/mysql
chown -R mysql:mysql ./
cd /home/ssd/mysql_data
chown -R mysql:mysql ./
sudo chown -R mysql:mysql /home/ssd/mysql_data/
sudo chmod 750 /home/ssd/mysql_data/

编写 
vim /etc/my.cnf
cd /home/ssd/mysql/bin/
./mysqld --initialize --console
cat /home/ssd/mysql/logs/error.log 
cd /home/ssd/mysql/support-files
./mysql.server start
#如果第一次启动,当初始化执行会有报错
sudo chown -R mysql:mysql /home/ssd/mysql_data/
sudo chmod 750 /home/ssd/mysql_data/
./mysql.server start
将mysql添加到系统进程中
cp /home/ssd/mysql/support-files/mysql.server /etc/init.d/mysqld
设置mysql自启动
chmod +x /etc/init.d/mysqld
systemctl enable mysqld

cd /home/ssd/mysql/bin/
./mysql -u root -p

alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'P@ssw0rd_3x@mpl3!#_With_Multi$ymbols_&More';
use mysql;
update user set user.Host='%'where user.User='root';
flush privileges;


INSTALL PLUGIN group_replication SONAME 'group_replication.so';
##########################################################设置恢复同步用户############################################################
SET SQL_LOG_BIN=0; # 如果需要跳过二进制日志记录
CREATE USER 'repl_root'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl_root'@'%';
FLUSH PRIVILEGES;
change master to master_user="repl_root",master_password="123456" for channel 'group_replication_recovery';
SET SQL_LOG_BIN=1; # 如果需要跳过二进制日志记录
##########################################################设置恢复同步用户############################################################

##########################################################设置伊隐文app用户############################################################
SET SQL_LOG_BIN=0; # 如果需要跳过二进制日志记录
CREATE USER 'yiyinwen'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'yiyinwen'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1; # 如果需要跳过二进制日志记录
##########################################################设置伊隐文app用户############################################################

##########################################################设置伊隐文只读用户############################################################
SET SQL_LOG_BIN=0; # 如果需要跳过二进制日志记录
CREATE USER 'onlyread'@'%' IDENTIFIED BY '123456';
GRANT SELECT ON *.* TO 'onlyread'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1; # 如果需要跳过二进制日志记录
##########################################################设置伊隐文只读用户############################################################

##########################################################设置proxySQL监控用户############################################################
SET SQL_LOG_BIN=0; # 如果需要跳过二进制日志记录
create user 'monitor'@'%' identified with mysql_native_password by '123456';
alter user 'monitor'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
grant all privileges on *.* to monitor@'%' with grant option;
create user proxysql@'%' identified by '123456';
grant all privileges on *.* to proxysql@'%' with grant option;
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1; # 如果需要跳过二进制日志记录
##########################################################设置proxySQL监控用户############################################################

##########################################################主节点才要初始化,其他节点不要初始化############################################################
SET SQL_LOG_BIN=0; # 如果需要跳过二进制日志记录
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
SET SQL_LOG_BIN=1;
##########################################################主节点才要初始化,其他节点不要初始化############################################################

在主服务器的MySQL控制台上,执行下述命令:
# 注意:只在主服务器上运行
# 我们在 primary.cnf 配置文件中把 group_replication_bootstrap_group 参数设置成 OFF
# 在 primary 服务器启动时并不会直接启动复制组,通过下面的命令动态的开启复制组是我们的集群更安全
    SET GLOBAL group_replication_bootstrap_group=ON;
    START GROUP_REPLICATION;
    SET GLOBAL group_replication_bootstrap_group=OFF;
在两个从服务器MySQL控制台上,执行下述命令:
    # 指定主从账户与指定通信频道
    CHANGE MASTER TO MASTER_USER="rpl_user", MASTER_PASSWORD="asAS123456!" FOR CHANNEL 'group_replication_recovery';
    # 开启组网数据同步
    START GROUP_REPLICATION;

RESET MASTER;

stop group_replication;
start group_replication;
quit;


./mysqlrouter --bootstrap --bootstrap-host=n0 --bootstrap-port=33060 --bootstrap-user=root --bootstrap-password=P@ssw0rd_F3bru@ry2024! --bootstrap-group-name=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa --config-dir=/home/ssd/mysql-router/config


主节点n0执行:直接CV就行,不要墨迹!

# 修改 MySQL 配置
sudo cat >> /etc/my.cnf <<-'EOF'

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/home/ssd/mysql
# 设置mysql数据库的数据的存放目录
datadir=/home/ssd/mysql_data
log_error = /home/ssd/mysql/logs/error.log
# 慢查询日志 (Slow Query Log)
slow_query_log = 1
slow_query_log_file = /home/ssd/mysql/logs/slow.log
long_query_time = 10
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password

innodb_log_file_size = 512M
innodb_strict_mode = 0
innodb_buffer_pool_size = 8G
innodb_buffer_pool_chunk_size = 1G
innodb_buffer_pool_instances = 8
max_allowed_packet= 1G
sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
wait_timeout=86400
interactive_timeout=86400
innodb_lock_wait_timeout=600

# ----------------------------------------------------MySQL Group Replication-------------------------------------------------------------
# 设置MySQL插件目录:MGR基于插件,必须设置插件路径
#plugin_dir=/home/ssd/mysql/plugin
# 服务器编号,Master=1
server_id=1
# 开启binlog的GTID模式(MGR强制要求)
gtid_mode=ON
# 开启后MySQL只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行
enforce_gtid_consistency=ON
# 关闭binlog校验(MGR强制要求)
binlog_checksum=NONE

# 定义用于事务期间哈希写入提取的算法,组复制模式下必须设置为 XXHASH64。
transaction_write_set_extraction=XXHASH64
# 确定组复制恢复时是否应该应用 SSL,通常设置为“开”,但默认设置为“关”。
loose-group_replication_recovery_use_ssl=ON
# 服务器实例所在复制组名称,必须是有效的 UUID,所有节点必须相同。
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
# 确定服务器是否应该在服务器启动期间启动组复制。
loose-group_replication_start_on_boot=OFF

# 为复制组中其他的成员提供的网络地址,指定为“主机:端口”的格式化字符串。
# 很多人想当然认为端口应该是3306,起始不然,MGR需要开启新端口24901同步交换
# 所以这里不要写错,同时,前面我们配置了hosts文件做了主机名与IP的映射,这里直接写主机名即可
loose-group_replication_local_address="n0:33061"

# 用于建立新成员到组的连接组成员列表。
# 这个列表指定为由分隔号间隔的组成员网络地址列表,类似 host1:port1、host2:port2 的格式。
# 同样采用n0~n2的主机名替代
loose-group_replication_group_seeds="n0:33061,n1:33061,n2:33061"

# 配置此服务器为引导组,这个选项必须仅在一台服务器上设置,
# 并且仅当第一次启动组或者重新启动整个组时。成功引导组启动后,将此选项设置为关闭。
loose-group_replication_bootstrap_group=OFF
# ----------------------------------------------------MySQL Group Replication-------------------------------------------------------------

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4


#################################################从节点的my.cnf############################################################
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/home/ssd/mysql
# 设置mysql数据库的数据的存放目录
datadir=/home/ssd/mysql_data
log_error = /home/ssd/mysql/logs/error.log
# 慢查询日志 (Slow Query Log)
slow_query_log = 1
slow_query_log_file = /home/ssd/mysql/logs/slow.log
long_query_time = 10
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password

innodb_log_file_size = 512M
innodb_strict_mode = 0
innodb_buffer_pool_size = 8G
innodb_buffer_pool_chunk_size = 1G
innodb_buffer_pool_instances = 8
max_allowed_packet= 1G
sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
wait_timeout=86400
interactive_timeout=86400
innodb_lock_wait_timeout=600


# ----------------------------------------------------MySQL Group Replication-------------------------------------------------------------
# 设置MySQL插件目录:MGR基于插件,必须设置插件路径
#plugin_dir=/home/ssd/mysql/plugin
# 服务器编号,Master=1
server_id=3
# 开启binlog的GTID模式(MGR强制要求)
gtid_mode=ON
# 开启后MySQL只允许能够保障事务安全,并且能够被日志记录的SQL语句被执行
enforce_gtid_consistency=ON
# 关闭binlog校验(MGR强制要求)
binlog_checksum=NONE

# 这个参数决定primary节点到secondary节点的请求是否为基于 RSA 密钥对的密码交换所需的公钥
loose-group_replication_recovery_get_public_key=ON
# 确定组复制恢复时是否应该应用 SSL,通常设置为“开”,但默认设置为“关”。
loose-group_replication_recovery_use_ssl=ON
# 服务器实例所在复制组名称,必须是有效的 UUID,所有节点必须相同。
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
# 确定服务器是否应该在服务器启动期间启动组复制。
loose-group_replication_start_on_boot=OFF

# 为复制组中其他的成员提供的网络地址,指定为“主机:端口”的格式化字符串。
# 很多人想当然认为端口应该是3306,起始不然,MGR需要开启新端口24901同步交换
# 所以这里不要写错,同时,前面我们配置了hosts文件做了主机名与IP的映射,这里直接写主机名即可
loose-group_replication_local_address="n2:33061"

# 用于建立新成员到组的连接组成员列表。
# 这个列表指定为由分隔号间隔的组成员网络地址列表,类似 host1:port1、host2:port2 的格式。
# 同样采用n0~n2的主机名替代
loose-group_replication_group_seeds="n0:33061,n1:33061,n2:33061"

# 配置此服务器为引导组,这个选项必须仅在一台服务器上设置,
# 并且仅当第一次启动组或者重新启动整个组时。成功引导组启动后,将此选项设置为关闭。
loose-group_replication_bootstrap_group=OFF
# ----------------------------------------------------MySQL Group Replication-------------------------------------------------------------

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值