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;