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