CenOS7 安装MySQL8.0主从架构

1. 卸载之前安装的

rpm -qa|grep mysql
service mysqld status
service mysqld stop
rpm -ev [需要移除组件的名称]

2. 安装mysql

cd /usr/local
mkdir mysql
cd mysql
wget http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm yum install mysql-community-server --nogpgcheck

3. 启动服务

systemctl list-unit-files|grep mysqld
mysqld --initialize
chown mysql:mysql /var/lib/mysql -R
systemctl start mysqld.service
systemctl enable mysqld
grep
'temporary password' /var/log/mysqld.log #查看密码

4. 修改权限

mysql -uroot -p密码
alter user  user() identified by 'Cxf_19960921';
use mysql;
SHOW VARIABLES LIKE 'validate_password%';
set global validate_password.policy = LOW;
set global validate_password.length = 6;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
create user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;

5. 主从架构搭建

   在之前单机环境的基础上搭建一主一从mysql8.0架构 主服务器ip:47.103.10.99  从服务器:124.221.246.23。

5.1 修改配置文件

#主服务器
vim /etc/my.cnf
[mysqld]
server-id = 1 #复制集群中的各节点的id均必须唯一
log-bin = master-log #开启二进制日志
relay-log = relay-log #开启中继日志
skip_name_resolve #关闭名称解析(非必须)
# 保存后重启 :wq
systemctl restart mysqld

#从服务器
vim /etc/my.cnf
[mysqld]
server-id = 2 #复制集群中的各节点的id均必须唯一;
relay-log = relay-log #开启中继日志
log-bin = master-log #开启二进制日志
read_only = ON #启用只读属性
relay_log_purge = 0 #是否自动清空不再需要中继日志
skip_name_resolve #关闭名称解析(非必须)
log_slave_updates = 1 #使得更新的数据写进二进制日志中
# 保存后重启:wq
systemctl restart mysqld

5.2 建立主从联系

 使用navicat连接两个服务器后做以下操作。

#主服务器 创建一个repl用户专门用来做主从同步 IP为从服务器
CREATE USER 'repl'@'124.221.246.23' IDENTIFIED WITH mysql_native_password BY 'Cxf_123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'124.221.246.23';
flush privileges;   show master status;

#从服务器 master_host为主服务地址 master_log_file,master_log_pos为主服务中查询出结果
change master to 
master_host='47.103.10.99',
master_port=3306,
master_user='repl',
master_password='Cxf_123456',
master_log_file='master-log.000002',
master_log_pos=1244;
reset slave;
start slave;
show slave status;

 从上图中可看出Slave_IO_Statue为Waiting for source to send event,Slave_IO_Running为yes,Slave_SQL_Running即为配置成功。

5.3 验证主从同步

  在主服务器创建一个数据库,如果在从服务器也出现该库说明同步成功。

create DATABASE sync_demo;

 5.4 全库同步与部分同步

  之前介绍的同步为全库同步,而实际环境中,一般并不需要针对全库做备份,而只需要对一些特别重要的库或者表来进行同步。

#主库
vim /etc/my.cnf binlog
-do-db=masterdemo #需要同步的二进制数据库名 expire-logs-days = 7 #只保留7天的二进制日志,以防磁盘被日志占满(可选) #不备份的数据库 binlog-ignore-db=information_schema binlog-ignore-db=performation_schema binlog-ignore-db=sys
# 保存后重启 :wq
systemctl restart mysqld

#从库
vim /etc/my.cnf replicate
-do-db = masterdemo #如果salve库名称与master库名相同,使用本配置
#如果master库名[mastdemo]与salve库名[mastdemo01]不同,使用以下配置[需要做映射]
replicate-rewrite-db = masterdemo -> masterdemo01 #如果不是要全部同步[默认全部同步],则指定需要同步的表
replicate-wild-do-table=masterdemo01.t_dict
replicate-wild-do-table=masterdemo01.t_num
# 保存后重启 :wq
systemctl restart mysqld

 5.5 搭建半同步复制集群

  半同步复制包含在mysql安装目录下的lib/plugin目录下的 semisync_master.so和semisync_slave.so两个文件中。需要在主服务上安装 semisync_master模块,在从服务上安装semisync_slave模块。

#主服务(需要登录成功)
install plugin rpl_semi_sync_master soname 'semisync_master.so';
show global variables like 'rpl_semi%';
set global rpl_semi_sync_master_enabled=ON;


#从服务(需要登录成功)
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
show global variables like 'rpl_semi%';
set global rpl_semi_sync_slave_enabled = on;
show global variables like 'rpl_semi%';
stop slave;
start slave;

 

posted @ 2022-04-21 16:38  檀潇兵  阅读(1089)  评论(0编辑  收藏  举报