MYSQL双主配置
一、为什么MYSQL要做双主?
这样做可以在一定程度上保证主库的高可用,在一台主库down掉之后,可以在极短的时间内切换到另一台主库上(尽可能减少主库宕机对业务造成的影响),减少了主从同步给线上主库带来的压力。
二、双主的思路
搭配keepalived进行使用。keepalived在实际的物理地址的基础上虚化的一个地址(VIP)。对外连接使用的便是这个浮动地址。在一台主机宕机后,这个浮动地址会跑到另外的地址上面。
mysql双主:指的是两台mysql(masterA&masterB)均可读写,互为主备。两者数据相互同步。通过keepalived对面的浮动地址便可实现高可用。
缺点也比较明显:一台mysql只负责同步数据(比较空闲),可能存在时延问题。
二、安装步骤
本教程采用mysql5.7,安装方式为rpm安装。
1、查询是否有安装旧版本mysql
。
rpm -qa|grep mysql
如果有,请卸载。使用命令:
rpm -e mysql-***************
#卸载报错,跳过依赖检查。使用
rpm -e mysql-**** --nodeps
#记得也卸载掉mariadb
rpm -qa|grep mariadb
rpm -e mariadb-* --nodeps
2、解压tar包
tar -xvf mysql-------.tar
3、以此安装mysql相关rpm包。注意版本
rpm -ivh mysql-community-common-5.7.20-1.el6.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.20-1.el6.x86_64.rpm
rpm -ivh mysql-community-client-5.7.20-1.el6.x86_64.rpm
rpm -ivh mysql-community-server-5.7.20-1.el6.x86_64.rpm
ps:需要mysql开发环境的记得安装mysql-community-devel
4、启动mysql,查看密码,登录mysql。
service mysqld start
#查看密码,一串字符的东西
grep 'temporary password' /var/log/mysqld.log
#默认root用户
mysql -uroot -p
5、修改密码、修改密码复杂度、创建用户。
#修改密码复杂度
set global validate_password_policy=0;
set global validate_password_length=1;
#修改密码
set password = password('abcd@test2021');
#创建用户并赋予权限
GRANT ALL PRIVILEGES ON *.* TO 'abcd'@'%' IDENTIFIED BY 'abcd@test2021';
#创建同步用户
GRANT ALL PRIVILEGES ON *.* TO 'slave_sync'@'%'IDENTIFIED BY 'slave@test2021';
#刷新配置
flush privileges;
#退出数据库
exit
6、修改数据库存储目录
#设置开机启动
chkconfig mysqld on
#停止mysql
service mysqld stop
#关闭防火墙
systemctl stop firewalld.service
#永久关闭防火墙
systemctl disable firewalld.service
#关闭IP tables
iptables -F
#修改selinux
vi /etc/selinux/config
#修改为下面的,并保存
SELINUX=disabled
#及时生效
setenforce 0
#创建新的mysql数据存储目录
mkdir -p /data/mysql_data
#复制MySQL的相关文件,不建议mv。带上-rp 保证权限不变。
cp -rp /var/lib/mysql /data/mysql_data
#修改mysql配置文件
vi /etc/my.cnf