tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
mkdir /data     #创建安装路径
mv mysql-5.7.24-linux-glibc2.12-x86_64 /data/mysql  #移动文件并重命名
groupadd mysql     #创建用户组 
useradd -r -g mysql mysql       #创建用户
cd /data/mysql                   #切换到安装目录
mkdir data                      #创建数据存放目录
mkdir mysql-log                 #创建日志存放目录
mkdir mysql-log/err-log
mkdir mysql-log/slow-log
mkdir mysql-log/relay-log
mkdir mysql-log/bin-log         
chown -R root:mysql .           #将当前目录以及子目录,所有者改变为 mysql,所属组修改为 mysql
chown -R mysql:mysql data
chown -R mysql:mysql mysql-log
vi /etc/security/limits.conf
# 在文件中加入以下内容
mysql   soft   nproc   2047
mysql   hard   nproc   16384
mysql   soft   nofile  1024
mysql   hard   nofile  65536 
cp /data/mysql/support-files/mysql.server /etc/init.d/mysql  # 可以使用service mysql start
ln -s  /data/mysql/bin/mysql /usr/bin         #任何路径可以使用 mysql 命令
vi /etc/my.cnf
[mysqld]
port = 3306                             #端口
basedir = /data/mysql                    #mysql安装路径
datadir = /data/mysql/data/              #mysql数据存放路径
#日志设置
log-error = /data/mysql/mysql-log/err-log/db-err.log   #错误日志路径
slow-query-log-file = /data/mysql/mysql-log/slow-log/db-slow.log  #慢SQL日志路径
relay-log=/data/mysql/mysql-log/relay-log/relay-log
long-query-time = 20 #怎样才算是慢sql,单位是秒
#开启 binlog 同步
server_id = 0001                  #一个集群内的 MySQL 服务器 ID,全局唯一
log-bin = /data/mysql/mysql-log/bin-log/db-binlog      #开启 Binlog 并写明存放日志的位置
max-binlog-cache_size = 64M       #binlog 最大能够使用cache的内存大小
max-binlog-size = 1G              #binlog 日志每达到设定大小后,会使用新的 binlog 日志
expire_logs_days = 15             #只保留最近15天的bin日志
binlog-format = mixed             #混合模式复制
innodb_flush_log_at_trx_commit = 1 #和 sync_binlog 控制MySQL磁盘写入策略以及数据安全性
sync-binlog = 1                  #控制数据库的binlog刷到磁盘上去
## 主主同步配置
replicate-do-db=db_test     #需要从主库-2同步的数据库1
replicate-do-db=db_dev      #需要从主库-2同步的数据库2
auto-increment-increment=2
auto-increment-offset=1
log-slave-updates=1
#性能调优配置
innodb_buffer_pool_size = 24576M
max_connections = 5000
max_connect_errors = 6000
external-locking = FALSE
max_allowed_packet = 64M
join_buffer_size = 64M
sort_buffer_size = 2M
read_rnd_buffer_size = 16M
#SQL模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld]
port = 3306
basedir = /data/mysql
datadir = /data/mysql/data
#日志设置
slow-query-log-file=/data/mysql/mysql-log/slow-log/db-slow.log
log-error=/data/mysql/mysql-log/err-log/db-err.log
relay-log=/data/mysql/mysql-log/relay-log/relay-log
long-query-time = 20 #怎样才算是慢sql,单位是秒
#开启 binlog 同步
server_id = 0002                  #一个集群内的 MySQL 服务器 ID,全局唯一
log-bin = /data/mysql/mysql-log/bin-log/db-binlog      #开启 Binlog 并写明存放日志的位置
max-binlog-cache_size = 64M       #binlog 最大能够使用cache的内存大小
max-binlog-size = 1G              #binlog 日志每达到设定大小后,会使用新的 binlog 日志
expire_logs_days = 15             #只保留最近15天的日志
binlog-format = mixed             #混合模式复制
innodb_flush_log_at_trx_commit = 1 #和 sync_binlog 控制MySQL磁盘写入策略以及数据安全性
sync-binlog = 1                  #控制数据库的binlog刷到磁盘上去
#主主设置
replicate-do-db=db_test     #需要从主库-1同步的数据库1
replicate-do-db=db_dev      #需要从主库-1同步的数据库2
auto-increment-increment=2
auto-increment-offset=2
log-slave-updates=1
#性能调优设置
innodb_buffer_pool_size = 24576M
max_connections = 5000
max_connect_errors = 6000
external-locking = FALSE
max_allowed_packet = 64M
join_buffer_size = 64M
sort_buffer_size = 2M
read_rnd_buffer_size = 16M
#SQL模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld]
port = 3306
basedir = /data/mysql
datadir = /data/mysql/data
#日志设置
expire_logs_days = 15
long-query-time = 3
slow-query-log-file=/data/mysql/mysql-log/slow-log/db-slow.log
log-error=/data/mysql/mysql-log/err-log/db-err.log
#主从设置
server_id = 0003 #这里需要在集群中保持唯一
replicate-do-db=db_test     #需要从主库同步的数据库1
replicate-do-db=db_dev      #需要从主库同步的数据库2
read_only=1                 #只读设置
#性能调优设置
innodb_buffer_pool_size = 24576M
max_connections = 5000
max_connect_errors = 6000
external-locking = FALSE
max_allowed_packet = 64M
join_buffer_size = 64M
sort_buffer_size = 2M
read_rnd_buffer_size = 16M
#SQL模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
 cd /data/mysql/bin/
 ./mysqld --defaults-file=/etc/my.cnf  --user=mysql --initialize  #初始化
cat /data/mysql/mysql-log/err-log/db-err.log
service mysql start
mysql -u root -p
set password = password(‘root‘);
flush privileges;
#如果需要使用 root 进行远程连接,执行以下语句
use mysql;
update user set host = ‘%‘ where user = ‘root‘;
flush privileges;
#创建一个用于和从机“通信”的用户,具有同步权限 
grant replication slave on *.* to ‘copy‘@‘%‘ identified by ‘copy‘
flush privileges;
#创建一个用于访问和操作某些特定的库的用户,不应该让应用直接使用 root 用户.
grant all privileges  on db_test.* to "app_user"@‘%‘ identified by "app_user";
flush privileges; 
#创建一个用于访问和操作某些特定的库的用户,不应该让应用直接使用 root 用户.
grant all privileges  on db_test.* to "app_user"@‘%‘ identified by "app_user";
flush privileges; 
show master status

stop slave;     #暂停
reset slave;    #重置
change master to master_host="master-b 的IP", master_user="copy",master_password="copy",master_log_file="db-binlog.000002",master_log_pos=2532; #设置和主机同步的用户信息,日志文件信息
start slave;    #启动
show slave status \G #查看从机状态,主要是看 Slave_IO_Running Slave_SQL_Running 上是否都是 yes

show master status
stop slave;     #暂停
reset slave;    #重置
change master to master_host="master-a 的IP", master_user="copy",master_password="copy",master_log_file="db-binlog.000002",master_log_pos=2532; #设置和主机同步的用户信息,日志文件信息
start slave;    #启动
show slave status \G #查看从机状态,主要是看 Slave_IO_Running Slave_SQL_Running 上是否都是 yes
yum install -y keepalived
vi /etc/keepalived/keepalived.conf
global_defs {
  router_id LVS_DEVEL
}
vrrp_sync_group VG_1 {
  group {
    VI_1
  }
}
vrrp_instance VI_1 {
  state BACKUP  #两个机器都是这个值,不要设置为 MASTER,使用下面的 priority 来控制 
  interface ens33  #通过 ifconfig 查看
  virtual_router_id 51
  priority 100 #优先级,另一台机器设置为 90 
  advert_int 1
  nopreempt  # 另一台优先级低的机器不设置此参数!
  authentication {
    auth_type root
    auth_pass root
  }
  virtual_ipaddress {
   192.168.86.250 # 这个是VIP
  }
}
virtual_server 192.168.86.250 3306 {  # 这个是VIP
  delay_loop 2
  lb_algo rr
  lb_kind DR
  persistence_timeout 50
  protocol TCP
  real_server 192.168.86.124 3306 {   # 这是机器的IP地址
    weight 3
    notify_down /data/mysql/bin/mysql.sh
    TCP_CHECK {
      connect_timeout 5
      nb_get_retry 3
      delay_before_retry 3
      connect_port 3306
    }
  }
}
vi /data/mysql/bin/mysql.sh
#!/bin/sh
pkill keepalived
chmod +x /data/mysql/bin/mysql.sh
systemctl start keepalived
systemctl enable keepalived # 开机自启动
systemctl start keepalived     # 启动
systemctl stop keepalived     # 暂停
systemctl restart keepalived  # 重启
systemctl status keepalived   # 查看状态
tail -f /var/log/messages

ip addr

service  mysql stop  #关闭 mysql
systemctl status keepalived #查看 keepalived 状态
原文:https://www.cnblogs.com/shulipeng/p/13937462.html