mysql双主

环境

CentOS7 服务器两台 172.16.72.101、172.16.72.102
mysql8.0.26

搭建mysql

参考
CentOS7离线安装mysql8

#因为需要配置文件启动,配置文件如下 步骤6修改为

6.配置/etc/my.cnf

mv /etc/my.cnf /etc/my.cnf.bak
vi /etc/my.cnf
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
# 允许 MyISAM 表的符号链接;8.0.26版本已弃用
#symbolic-links=0
# 允许最大连接数
max_connections=1024
#任何给定 MySQL 用户帐户允许的最大同时连接数。值 0(默认值)表示 “没有限制。”
max_user_connections=0
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100
#SELECT语句 的执行超时 ,以毫秒为单位。如果值为 0,则不启用超时
max_execution_time=5000
#如果设置为OFF,MySQL 会中止 SELECT可能需要很长时间才能执行的语句(即,优化器估计检查的行数超过 的值的语句 max_join_size)。WHERE当发布了不明智的声明时,这很有用。新连接的默认值为 ON,它允许所有 SELECT语句。
#sql_big_selects=OFF
#查询返回数据行数最大值,超过此值则终止查询默认最大值18446744073709551615
max_join_size=10000
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#是否对sql语句大小写敏感,1表示不敏感 注意此参数在8.0版本后必须在初始化数据库之前配置,即初始化后不允许修改此值
lower_case_table_names = 1
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 1800
wait_timeout = 1800
#Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6
#执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞
lock_wait_timeout = 3600
#内部内存临时表的最大值。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size = 64M
max_heap_table_size = 64M

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
#mysql socket连接使用
[client]
port=3306
#配合[mysqld] 下的socket
socket=/usr/local/mysql/data/mysql.sock

上述配置中需要新增 log、data文件夹

#创建log、data文件夹
mkdir data log
# 因为是使用root权限创建的文件夹,所以需要修改文件夹权限为mysql
chown -R mysql:mysql /usr/local/mysql/

配置集群

1. 修改配置文件

  1. 修改 172.16.72.101配置文件 在 [mysql] 下添加配置

    vi /etc/my.cnf

    # 集群master
    #服务id 所有的集群id都不可相同
    server_id=1
    # 主从复制需要log-bin文件 主机需要指定log-bin文件目录
    log-bin=/usr/local/mysql/log/mysql-bin
    binlog_format=mixed
    #双主同步时主机也需要配置从机同步文件 本次是主从复制,主机不需要以下配置
    relay-log=/usr/local/mysql/log/mysql-relay-bin
    relay-log-index=/usr/local/mysql/log/mysql-relay-bin.index
    #双主同步为了主键自增时值发生冲突,需要设置自增步长为2 且首字段一个是1一个是2
    #auto-increment-increment 表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535
    #auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 .. 65535
    auto-increment-increment=2
    auto-increment-offset=1
    
  2. 修改 172.16.72.102配置文件

    vi /etc/my.cnf

    # 集群slave
    #服务id 所有的集群id都不可相同
    server_id=2
    # 主从复制需要log-bin文件 主机需要指定log-bin文件目录 从机不需要配置 
    log-bin=/usr/local/mysql/log/mysql-bin
    binlog_format=mixed
    #从机同步文件 
    relay-log=/usr/local/mysql/log/mysql-relay-bin
    relay-log-index=/usr/local/mysql/log/mysql-relay-bin.index
    #双主同步为了主键自增时值发生冲突,需要设置自增步长为2 且首字段一个是1一个是2
    #auto-increment-increment 表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535
    #auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 .. 65535
    auto-increment-increment=2
    auto-increment-offset=1
    
  3. 主机从机分别重启

    service mysql restart 
    

2.创建用户

172.16.72.201配置

  1. 登录并创建从机访问用户

    mysql -uroot -p
    
     CREATE USER 'repl'@'172.16.72.202' IDENTIFIED BY 'repl_password';
     GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.16.72.202';
     flush privileges;
    

    解析:

    #创建一个用户repl 密码是 repl_password 来源ip为172.16.72.202(从机ip)
    CREATE USER ‘repl’@‘172.16.72.202’ IDENTIFIED BY ‘repl_password’;
    #赋予’repl’@‘172.16.72.202’ 用户可以进行复制
    GRANT REPLICATION SLAVE ON . TO ‘repl’@‘172.16.72.202’;
    #刷新,即刻生效
    flush privileges;

    在这里插入图片描述

  2. 查看主机的信息

    show master status;
    

    在这里插入图片描述
    File: mysql-bin.000001
    Position: 842

172.16.72.202修改需要同步的主机的地址

  1. 登录并修改主机同步地址

    mysql -uroot -p
    
    change master to master_host='172.16.72.201', master_user='repl',master_password='repl_password',master_log_file='mysql-bin.000001',master_log_pos=842;
    start slave;
    

    解析:1): change master to master_host=‘172.16.72.201’, master_user=‘repl’,master_log_file=‘mysql-bin.000001’,master_log_pos=842;

    #master_host 主机地址
    #master_user 主机创建的从机复制账号 来源于CREATE USER ‘repl’@‘172.16.72.202’ IDENTIFIED BY ‘repl_password’; 的repl
    #master_password 主机创建的从机复制账号密码 来源于CREATE USER ‘repl’@‘172.16.72.202’ IDENTIFIED BY ‘repl_password’; 的repl_password
    #master_log_file 主机show master status; 时显示的File
    #master_log_pos 主机show master status; 时显示的Position
    #start slave; 启动从机开始同步

    在这里插入图片描述

172.16.72.202配置主机信息

 CREATE USER 'repl'@'172.16.72.201' IDENTIFIED BY 'repl_password';
 GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.16.72.201';
 flush privileges;

解析:

#创建一个用户repl 密码是 repl_password 来源ip为172.16.72.201(从机ip)
CREATE USER ‘repl’@‘172.16.72.201’ IDENTIFIED BY ‘repl_password’;
#赋予’repl’@‘172.16.72.201’ 用户可以进行复制
GRANT REPLICATION SLAVE ON . TO ‘repl’@‘172.16.72.201’;
#刷新,即刻生效
flush privileges;

172.16.72.201修改需要同步的主机的地址

  1. 在172.16.72.202上查看master 信息

    show master status\G
    

    在这里插入图片描述
    File: mysql-bin.000001
    Position: 857

  2. 修改172.16.72.201同步地址

    change master to master_host='172.16.72.202', master_user='repl',master_password='repl_password',master_log_file='mysql-bin.000001',master_log_pos=1439;
    start slave;
    

    解析:1): change master to master_host=‘172.16.72.202’, master_user=‘repl’,master_log_file=‘mysql-bin.000001’,master_log_pos=842;

    #master_host 主机地址
    #master_user 主机创建的从机复制账号 来源于CREATE USER ‘repl’@‘172.16.72.202’ IDENTIFIED BY ‘repl_password’; 的repl
    #master_password 主机创建的从机复制账号密码 来源于CREATE USER ‘repl’@‘172.16.72.202’ IDENTIFIED BY ‘repl_password’; 的repl_password
    #master_log_file 主机show master status; 时显示的File
    #master_log_pos 主机show master status; 时显示的Position
    #start slave; 启动从机开始同步

    在这里插入图片描述

验证

  1. 查看信息

     show slave status \G
    

    出现如下信息
    Slave_IO_Running :yes
    Slave_SQL_Running:Yes
    即为从机同步成功在这里插入图片描述

  2. 主机创建数据库查看从机是否自动创建
    主机创建数据库test并查看

    create database test;
    show databases;
    

    在这里插入图片描述
    从机查看

    show databases;
    

    在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值