系列文章目录
在企业中配置主从库是必不可少的一个环节,可以避免很多的奇葩操作导致的数据库宕机从而使应用也挂掉的情况。mysql的主从配置还是比较简单的,跟着文档一步一步来即可,亲测好用。希望对您有所帮助!
文章目录
目录
前言
安装包: mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
操作系统: Centos8和中标麒麟(都已测试均好使)
服务器地址:10.10.109.8 10.10.109.9
一、安装
# 解压
tar -xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz
# 移动
mv /opt/mysql-8.0.26-linux-glibc2.12-x86_64 /data
cd /data
mv mysql-8.0.26-linux-glibc2.12-x86_64 mysql
# 创建存放数据文件夹(磁盘阵列)
mkdir -p /mysql/data
chmod -R 777 /mysql /data
# 创建用户(复杂度需求)
groupadd mysql
useradd -g mysql mysql
chown -R mysql.mysql /data/mysql
# 初始化数据库
cd /data/mysql/
./bin/mysqld --user=mysql --lower-case-table-names=1 --basedir=/data/mysql/ --datadir=/mysql/data/ --initialize ;
# 配置主库my.cnf (修改默认端口)
vi /etc/my.cnf
[client]
port=3209
socket=/data/mysql/mysql.sock
[mysqld]
port=3209
basedir=/data/mysql
datadir=/mysql/data
pid-file=/data/mysql/mysql.pid
socket=/data/mysql/mysql.sock
log_error=/data/mysql/error.log
server-id=1
character-set-server=utf8
lower-case-table-names=1
log-bin=mysql-bin
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog_format=STATEMENT
open-files-limit=65000
default_authentication_plugin=mysql_native_password
innodb_buffer_pool_size=3GB
# 启动mysql
cp -a ./support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
-
检查服务是否生效
chkconfig --list mysql
创建文件
chmod -R 777 /mysql/data/
cd /data/mysql
touch error.log
touch mysql.pid
chmod –R 777 /data/mysql
-
启动、停止、重启
service mysql start
service mysql stop
chown -R mysql.mysql /data/mysql
service mysql restart
# 创建软连接
ln -s /data/mysql/bin/mysql /usr/bin
ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
# 修改root密码(复杂度需求)
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new password';
# 增加远程链接权限
use mysql
update user set host ='%' where user='root';
select user,host from user;
# 从库安装与主库一致
# 从库配置my.conf(修改默认端口)
# 清空,使用下面内容
[client]
port=3209
socket=/data/mysql/mysql.sock
[mysqld]
port=3209
basedir=/data/mysql
datadir=/mysql/data
pid-file=/data/mysql/mysql.pid
socket=/data/mysql/mysql.sock
log_error=/data/mysql/error.log
server-id=2
relay-log=mysql-relay
character-set-server=utf8
lower-case-table-names=1
open-files-limit=65000
read_only=1
master_info_repository=TABLE
relay_log_info_repository=TABLE
default_authentication_plugin=mysql_native_password
innodb_buffer_pool_size=3GB
二、主从配置
1 关闭防火墙 (可修改为允许端口通信)
# 查看防火墙状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
2 主从测试是否可远程访问
mysql -uroot -p -h10.10.109.8
mysql -uroot -p -h10.10.109.9
3 主数据库创建用户slave并授权(密码复杂度)
mysql -uroot -p
create user 'slave'@'%' identified with mysql_native_password by 'password';
grant replication slave on *.* to 'slave'@'%';
flush privileges;
4 主数据库查询服务ID及Master状态
# 登录
mysql -uroot -p
# 查询server_id是否可配置文件中一致
show variables like 'server_id';
# 若不一致,可设置临时ID(重启失效)
set global server_id = 1;
# 查询Master状态,并记录 File 和 Position 的值
show master status;
5 从库设置主库
mysql -uroot -p
# 查询server_id是否可配置文件中一致
show variables like 'server_id';
# 若不一致,可设置临时ID(重启失效)
set global server_id = 2;
# 设置主数据库参数
change master to master_host='10.10.109.8',master_port=3209,master_user='slave',master_password='密码',master_log_file='mysql-bin.000006',master_log_pos=2812;
# 开始同步
start slave;
# 支持的操作
stop slave;
reset slave;
start slave;
# 查询slave状态
show slave status\G;
#如果主从库不一致,删除主库时从库会报错,解决方案:
stop slave;
#跳过1个错误(多个可以设置2.3……)
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
start slave;
#在查询状态,如果还有错继续跳过
show slave status\G;
最终状态如下:
三 限定用户失败重试时间
1、从库执行:
stop slave;
2、主库执行:
mysql -u root -p
3、登录后安装插件:
install plugin CONNECTION_CONTROL soname 'connection_control.so';
install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';
4、主库修改配置文件my.cnf新增两行:
connection-control-failed-connections-threshold=5 #登陆失败次数限制
connection-control-min-connection-delay=300000 #限制重试时间,此处为毫秒,注意按需求换算,此处为5分钟
5重启mysql:
service mysql restart
登录主库数据库,查看是否生效
show variables like '%connection_control%';
6、从库执行:
mysql -u root -p
7、登录后安装插件:
install plugin CONNECTION_CONTROL soname 'connection_control.so';
install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';
8、从库修改配置文件my.cnf新增两行:
connection-control-failed-connections-threshold=5 #登陆失败次数限制connection-control-min-connection-delay=300000 #限制重试时间,此处为毫秒,注意按需求换算,此处为5分钟
9、从库重启mysql:
service mysql restart
登录从库数据库,查看是否生效
show variables like '%connection_control%';
10、从库执行:
start slave;
11、 查询slave状态
show slave status\G;
12、创建用户
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
对某一数据库授权
grant all privileges on 库名.* to '用户名'@'%';
对所有数据库授权
grant all privileges on *.* to 'cast'@'%';
完结
总结
希望对您有帮助,不要忘记支持一下小编哦!