1、环境介绍
192.168.31.14 A机器
192.168.31.82 B机器
192.168.31.200 vip(A主B从)
2、安装mysql
2.1、创建配置文件:vi mysql.cnf
[mysqld]
port = 3306
basedir=/home/data/server/mysql
datadir=/home/data/server/mysql/data
max_connections=1000
character-set-server=utf8
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=20M
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
skip-grant-tables=1
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
2.2、创建安装文件:vi mysql.sh
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
mkdir -p /home/data/server/
rm -rf /etc/my.cnf
cp mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz /home/data/server/
cp mysql.cnf /etc/my.cnf
cd /home/data/server/
tar -xzvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.21-linux-glibc2.12-x86_64 mysql
rm -rf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
groupadd mysql
useradd -r -g mysql mysql
cd mysql
mkdir data
chown -R mysql /home/data/server/mysql/
chgrp -R mysql /home/data/server/mysql/
cd /home/data/server/mysql/bin
yum install -y libaio-devel.x86_64 numactl
./mysqld --initialize --user=mysql --basedir=/home/data/server/mysql/ --datadir=/home/data/server/mysql/data/
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/
cd /home/data/server/mysql/support-files/
cp mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
yum install initscripts -y
service mysql start
chkconfig --add mysql
cd /home/data/server/mysql/bin
./mysql -u root <<EOF
flush privileges;
grant all privileges on *.* to root@'%' identified by '123456' with grant option;
USE mysql;
DELETE FROM user WHERE User="root" and Host="localhost";
flush privileges;
exit
EOF
sed -i 's/skip-grant-tables=1/# skip-grant-tables=1/g' /etc/my.cnf
service mysql restart
2.3、执行安装脚本
chmod +x mysql.sh
./mysql.sh
3、配置双主
3.1、A节点增加以下配置:vi /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
binlog_format=row
auto-increment-increment=2
auto-increment-offset=1
log-slave-updates=1
3.2、B节点增加以下配置:vi /etc/my.cnf
[mysqld]
server-id=2
log-bin=mysql-bin
binlog_format=row
auto-increment-increment=2
auto-increment-offset=2
log-slave-updates=1
3.3、重启生效(AB都执行)
service mysql restart
3.4、查看master状态
A节点-->:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set
B节点-->:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set
3.5、配置主从
A执行-->:
mysql>stop slave;
mysql>change master to master_host='192.168.31.82',master_port=3306,master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=154;
mysql>start slave;
B执行-->:
mysql>stop slave;
mysql>change master to master_host='192.168.31.14',master_port=3306,master_user='root',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=154;
mysql>start slave;
3.6、验证是否成功(AB分别执行)
mysql> show slave status;
当这个参数都为yes时,证明主从复制成功
Slave_IO_Running: Yes Slave_SQL_Running: Yes
此时,在AB节点都可以增加数据且都能复制到另一个节点
4、安装keepalived
yum install -y keepalived
5、配置keepalived.conf
vi /etc/keepalived/keepalived.conf
(1)主节点A
global_defs
{
router_id master_14
}
vrrp_script chk_mysql_port {
script "</dev/tcp/127.0.0.1/3306"
interval 1
weight -2
}
vrrp_instance mysql {
state MASTER
interface ens33 #这个要和本机网卡名字一样
virtual_router_id 100 #这个数值 master和slave必须统一
priority 100 #这个数值决定哪台服务器是master
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.31.200
}
track_script {
chk_mysql_port
}
}
(2)从节点B
global_defs
{
router_id slave_82
}
vrrp_script chk_mysql_port {
script "</dev/tcp/127.0.0.1/3306"
interval 1
weight -2
}
vrrp_instance mysql {
state BACKUP
interface ens33 #这个要和本机网卡名字一样
virtual_router_id 100 #这个数值 master和slave必须统一
priority 100 #这个数值决定哪台服务器是master 这里我们比master数值低,所以角色是backup,
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.31.200
}
track_script {
chk_mysql_port
}
}
6、启动keepalived
systemctl start keepalived
systemctl enable keepalived
参考资料:
https://xuxile.blog.csdn.net/article/details/52313640
https://blog.csdn.net/qq_44866424/article/details/120151293
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)