本文最后更新于0 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
安装依赖
yum -y install autoconf perl-JSON net-tools
由于CentOS7自带mariadb,需要提前卸载
rpm -qa | grep mariadb
rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps
下载mysql
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.36-1.el7.x86_64.rpm-bundle.tar
安装mysql
tar xf mysql-5.7.36-1.el7.x86_64.rpm-bundle.tar
rpm -ivh --force *.rpm
配置主库
[mysqld]
user=mysql
port=3306
datadir=/data/mysql/data
socket=/data/mysql/run/mysqld.sock
symbolic-links=0
log-error=/data/mysql/log/mysqld.log
pid-file=/data/mysql/run/mysqld.pid
lower_case_table_names = 1
skip-external-locking
max_allowed_packet = 1073741824
innodb_buffer_pool_size = 38654705664
character_set_server=utf8
init_connect='SET NAMES utf8'
sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
default-time-zone = '+8:00'
bind-address = 10.26.1.179
key_buffer_size = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover-options = BACKUP
max_connections = 10000
query_cache_limit = 512M
query_cache_size = 512M
log_error = /data/mysql/log/error.log
max_binlog_size = 500M
lower_case_table_names=1
#### binlog configure
server_id=179
skip_name_resolve = ON
transaction-isolation = READ-COMMITTED
log-bin=mysql-bin
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performation_schema
binlog-ignore-db=sys
binlog-ignore-db=test
binlog_format=ROW
binlog_cache_size=2M
expire_logs_days=4
slave_skip_errors=1062
### GTID configure
gtid_mode = ON
enforce_gtid_consistency = 1
log-slave-updates = 1
binlog_gtid_simple_recovery = 1
### semi sync configure
loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_master_timeout = 10000
rpl_semi_sync_master_wait_point = AFTER_SYNC
rpl_semi_sync_master_wait_for_slave_count = 1
### plugin load
plugin_load="rpl_semi_sync_master=semisync_master.so"
### slow configure
slow_query_log=ON
slow_query_log_file=/data/mysql/log/slow_query.log
long_query_time=1
[mysqld_safe]
socket = /data/mysql/run/mysqld.sock
nice = 0
[client]
socket = /data/mysql/run/mysqld.sock
配置主库的启动文件
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/data/mysql/run/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Needed to create system tables
ExecStartPre=/usr/bin/mysqld_pre_systemd
# Start main service
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/data/mysql/run/mysqld.pid $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 65535
LimitNPROC = 65535
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
创建MySQL的相关目录
mkdir -p /data/mysql/{data,run,log}
chown -R mysql.mysql /data/mysql
创建主从复制的用户和权限
创建用户
create user 'repluser'@'%' identified by 'u9VJkDK8mwyCfU#h';
授权
grant replication client, replication slave on *.* to 'repluser'@'%';

