【MySQL】主从复制+读写分离+高可用
本文最后更新于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'@'%';
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇