1、安装mysql
首先在CentOS中下载rpm包,并安装本地mysql源
下载rpm包:wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm --no-check-certificate
安装mysql源:yum localinstall mysql80-community-release-el7-3.noarch.rpm
通过 yum localinstall
安装mysql源,可以帮助我们解决本地rpm包的依赖问题。
验证是否安装成功命令:yum repolist all | grep mysql
修改默认安装版本为5.7,初始安装成功后Community server 默认是8.0。
vim /etc/yum.repos.d/mysql-community.repo,将5.7下的enabled设置为1,8.0的enabled设置为0。
安装mysql yum install mysql-community-server,下载过程时间较长需等待一段时间。
2、启动mysql,并查看状态
systemctl start mysqld 启动mysql
systemctl status mysqld 查看mysql状态
systemctl restart mysqld 重启mysql
如下图表示启动成功。
3、查看初始密码,初始登录。
查看初始密码 grep 'temporary password' /var/log/mysqld.log,如下图行尾。
首次登录
mysql -uroot -p 回车后输入 刚刚查询到的原始密码,成功进入mysql。
4、修改登录密码
由于数据库密码默认规则为最小长度为8,密码的验证强度等级为MEDIUM,所以为了方便自己测试使用,希望将数据库密码设置的简单一点,可以修改一下密码策略
set global validate_password_policy=0; 设置0或者LOW,校验级别最低,只校验密码长度,只要长度跟validate_password_length一样即可
set global validate_password_length=1; (这里设置1,小于4会按照默认最小值4来设置)
SHOW VARIABLES LIKE 'validate_password%'; 查看密码规则。
如下图已修改。
然后执行修改密码命令 alter user root@localhost identified by '新密码';
最后通过 flush privileges;
刷新权限,立刻生效。
5、实现主从复制,需要系统的关闭防火墙。
systemctl stop iptables (stop 换成 status 就是查看状态)
Systemctl stop firewalld
6、在主库虚拟机全部设置好后,通过虚拟机克隆出多个虚拟机。
7、配置主库信息
1)修改 my.cnf文件,vi /etc/my.cnf ,新增如下配置:
log_bin=mysql-bin
# 注意: server-id 每台服务器不能相同
server-id=1
sync-binlog=1
binlog_format=ROW
#忽略系统数据库
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performation_schema
binlog-ignore-db=sys
#relay_log配置
relay_log=mysql-relay-bin
log_slave_updates=1
#禁止relay_log在线程执行完后被自动删除
relay_log_purge=0
修改后配置文件后需重启mysql systemctl restart mysqld
2)然后进入mysql mysql -uroot -p
执行以下命令(密码为root)
grant replication slave on *.* to 'root'@'%' identified by 'root';
grant all privileges on *.* to 'root'@'%' identified by 'root';
flush privileges;
3) 检查开启主从配置是否成功
show master status;
记录 file 及 position,配置从库时需要使用。
8、配置从库信息
1)由于是克隆的虚拟机,mysql的 server-uuid是相同的,需要首先修改两个从库的该参数,否则主从复制会失败,uuid在不同的服务器需要唯一。
cd /var/lib/mysql/
vi auto.cnf
修改为不同的server-uuid即可。
2)修改从库服务器的my.cnf
修改后配置文件后需重启mysql systemctl restart mysqld
3)然后进入mysql mysql -uroot -p
执行以下命令
change master to master_host=‘192.168.92.128’,
master_port=3306,
master_user='root',
master_password='root',
master_log_file='mysql-bin.000002', (以上记录的file名称)
master_log_pos=869;(以上记录的position位置)
启动配置,检查结果。
start slave;
show slave status;
从库状如下表示主从配置成功。
最后测试,在主库新建表插入数据,从库查询表数据,可以查到相同的结果表示主从复制同步配置成功。
9、半同步复制过程
1)主库执行:
Install plugin rpl_semi_sync_master soname 'semisync_master.so';
show variables like '%semi%';
Set global rpl_semi_sync_master_enabled=1;
Set global rpl_semi_sync_master_timeout=1000;
2)从库执行:
Install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
show variables like '%semi%';
Set global rpl_semi_sync_slave_enabled=1;
stop slave;
start slave;
执行过程如下图
3)测试是否配置成功
先在主库插入一条数据,在两个从库查询数据是否同步。
4)查看日志:
cd /var/log/;
cat mysqld.log;
从日志中可以看到半同步复制配置成功。