美文网首页
mysql8 主主负载配置

mysql8 主主负载配置

作者: 张建勇9511 | 来源:发表于2019-08-01 10:26 被阅读0次

一、CentOS7下安装mysql8

1.1 安装前清理工作
rpm -pa | grep mysql

查找出安装的mysql相关软件包依赖包,

yum remove mysql-xxx-xxx-

删除找到的软件依赖包

find / -name mysql

查找mysql相关目录,

rm -rf /var/lib/mysql

删除目录

1.2 安装mysql8

1.2.1 先去官网下载mysql的repo源并安装,
mysql repo下载地址

mysql repo 下载地址
1.2.2 下载好的mysql repo文件上传到Centos,安装 yum repo文件并更新 yum 缓存
  rpm -ivh mysql80-community-release-el7-3.noarch.rpm

执行后在 /etc/yum.repos.d/ 目录下生成两个repo文件


repo文件

更新 yum 命令

yum clean all
yum makecache

1.2.3 使用 yum安装mysql

yum install mysql-community-server

安装mysql

1.2.4 配置my.cnf

lower_case_table_names = 1 #是否大小写敏感,1为非大小写敏感,默认0大小写敏感,mysql8在第一次启动就要配置好,后面更改了就会报错

mysql8 中大小写敏感配置要在第一次启动前配置好

systemctl start mysqld.service

启动mysql

1.2.5 修改初始密码

cat /var/log/mysqld.log | grep password

找到默认密码

mysql -u root -p

使用默认密码登录

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

修改初始密码

SHOW GRANTS FOR `root`;  -- 查看用户权限 
CREATE USER `root`@`%` IDENTIFIED BY '1qaz@WSX';  -- 创建用户 
GRANT ALL ON *.* TO `root`@`%` WITH GRANT OPTION;-- 修改用户权限
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1qaz@WSX'; --  修改用户密码校验方式

以上可能会用到的用户权限相关sql

3. mysql主主负载

3.1 部署好两台相同的mysql服务
假设
服务器A:192.168.1.1
服务器B:192.168.1.2

CREATE USER 'sync'@'192.168.1.2' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'sync'@'192.168.1.2';

在服务器A上创建同步账号,并添加权限

CREATE USER 'sync'@'192.168.1.1' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'sync'@'192.168.1.1';

在服务器B上创建同步账号,并添加权限

3.2 配置my.cnf

[mysqld]
user                            = mysql #mysql使用的用户名
bind_address                    = 0.0.0.0 #监听IP,此处不能用127.0.0.1因为需要外部机器访问
default_authentication_plugin   = mysql_native_password
server-id = 2 #server-id,必须是大于0的一个整数,两台服务器不能设置一样,一般一个设1,另一个设2就可以
log_bin                         = mysql-bin #二进制日志名,最终会在/usr/local/mysql/data/中以mysql-bin.000001这种文件名形式存在,扩展名是一个编号
binlog_format                   = mixed #混合型日志格式,具体含义可自行查询
binlog_expire_logs_seconds      = 604800 #日志过期时间
sync-binlog                     = 1
innodb_flush_log_at_trx_commit  = 1

# Master DB #
#需要同步的数据库用多个binlog-do-db,不要写在一行用逗号分隔,这种情况可能会导致数据库同步状态一切正常,就是同步不了,日志也没有任何问题,根据实验发现,如果写成binlog-do-db = database1,database2
在使用show master status以及show slave status时与下面设置方式完全一样,但就是无法同步
binlog-do-db                    = sjy  #需要同步的数据库
binlog-do-db                    = sjy_test  #需要同步的数据库
#由于两个服务器都可以写数据,为了防止自增的key冲突,需要设置下面两个,increment是每次增长数,两台服务器设为2即可,offset是起始偏移,一个服务器设置为1,另一个设置为2,这样自增id在服务器A上是1、3、5这样,在服务器B上就是2、4、6不会产生冲突
auto-increment-increment        = 2
auto-increment-offset           = 2

# Slave DB #
replicate-do-db                 = sjy  #需要从其他服务器同步过来的数据库名
replicate-do-db                 = sjy_test
relay_log                       = relay-bin #中继日志名称
  
lower_case_table_names = 1 #是否大小写敏感,1为非大小写敏感,默认0大小写敏感,mysql8在第一次启动就要配置好,后面更改了就会报错

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

server-id 两台服务器设置不同的值,一个设置1,一个设置2
auto-increment-increment 主键增长数,两台设置相同值
auto-increment-offset 偏移量设置不同值,一个设置1,一个设置2

3.3 配置主从服务信息,开启服务
服务器A为主服务时中执行

SHOW MASTER STATUS\G

查看主服务信息

*************************** 1. row ***************************
             File: mysql-bin.000004
         Position: 2165741
     Binlog_Do_DB: sjy,sjy_test
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

记下File和Position值,在B服务器上设置,

CHANGE MASTER TO MASTER_HOST='192.168.100.1',MASTER_USER='sync',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=2165741;

MASTER_HOST 主服务器IP,即为对方服务器IP
MASTER_USER 我们创建的同步用户
MASTER_PASSWORD 用户密码
MASTER_LOG_FILE 主服务器上查到的日志文件名
MASTER_LOG_POS 主服务器上查到的日志位置

同理,在服务器B上执行SHOW MASTER STATUS,把信息配置到服务器A上。

start slave;

两个服务器分别执行,开启slave。

3.4 检验开启状态

show slave status\G

分别在两台服务器上执行,查看 Slave_IO_Running 和 Slave_SQL_Running 这两个值是否都为YES;
在服务器A中修改数据,数据库B是否数据一致,在数据库B中修改数据,数据库A中是否数据一致。

相关文章

网友评论

      本文标题:mysql8 主主负载配置

      本文链接:https://www.haomeiwen.com/subject/ndifdctx.html