MySQL实现双主从架构配置

MySQL实现双主从架构配置

环境信息

服务器信息

IP 简称
192.168.94.21 server21
192.168.94.31 server31

配置双主从架构

修改MySQL的配置,开启binlog

如果是新安装的高版本MySQL,默认情况下是没有生成/etc/my.cnf这个文件的,那我们就在etc目录下新增一个my.cnf的配置文件,配置文件参数的意义可以参见博客,这里就不再赘述了。

  1. server21新增my.cnf配置文件
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 特别注意这个server-id,两台MySQL的不能设置成一样的哦
server-id=1
bind-address=0.0.0.0
port=3306
# 数据库安装目录
basedir=/usr/local/mysql
# 数据文件存放目录
datadir=/data/mysqldata
# 字符编码集
character_set_server=utf8
lower_case_table_names=1
binlog-format=mixed
transaction_isolation=REPEATABLE-READ
auto-increment-increment=2 #步长为2
auto-increment-offset=1  #奇数增长(两台server的配置不能一样哦)
log-error=/usr/local/mysql/logs/err.log
log-bin=/data/mysqldata/mysql-bin
log-bin-index=/data/mysqldata/mysql-bin.index
log_slave_updates=1
slow_query_log=1
slow_query_log_file=/usr/local/mysql/logs/slow-queries.log
general_log=1
general_log_file=/usr/local/mysql/logs/general-log.log
expire_logs_days=7
max_binlog_size=1024M

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_allowed_packet=128M
max_connections=1000
#skip-name_resolve
log_bin_trust_function_creators=1
  1. server31新增my.cnf配置文件
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
server-id=2
bind-address=0.0.0.0
port=3306
basedir=/usr/local/mysql
datadir=/data/mysqldata
character_set_server=utf8
lower_case_table_names=1
binlog-format=mixed
transaction_isolation=REPEATABLE-READ
auto-increment-increment=2 #步长为2
auto-increment-offset=2  #奇数增长
log-error=/usr/local/mysql/logs/err.log
log-bin=/data/mysqldata/mysql-bin
log-bin-index=/data/mysqldata/mysql-bin.index
log_slave_updates=1
slow_query_log=1
slow_query_log_file=/usr/local/mysql/logs/slow-queries.log
general_log=1
general_log_file=/usr/local/mysql/logs/general-log.log
expire_logs_days=7
max_binlog_size=1024M

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_allowed_packet=128M
max_connections=1000
#skip-name_resolve
log_bin_trust_function_creators=1
  1. 保存配置,然后重启MySQLservice mysqld restart

如果是新安装的MySQL,登录到MySQL控制台需要先修改密码
设置数据库root用户密码

set password for root@localhost=password('123456');

配置MYSQL主从关系及开启主从同步

  1. 先登录到server21的MySQL控制台
    mysql –u root –p
  2. 创建主从同步账号,并锁定数据库表
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'196.168.94.31' IDENTIFIED BY "slave";   #创建同步账号
FLUSH PRIVILEGES;    #权限修改立即生效
FLUSH TABLES WITH READ LOCK;    #锁定数据库为只读,确保备份数据一致性
  1. 查看server21的master信息,记录下File和position两个参数的信息(建议查看两次,取最后一次的结果),在建立主从关系的时候用得上
    show master status;
    如下图所示:
    在这里插入图片描述
  2. 再开一个server31的ssh窗口,登录到MySQL控制台,输入以下命令建立server21和server31的主从同步关系
CHANGE MASTER TO MASTER_HOST='196.168.94.31', MASTER_PORT = 3306, MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=1093;
  1. server31上创建主从同步账号,并锁定数据库表
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO slave@'196.168.94.21' IDENTIFIED BY "slave";   #创建同步账号
FLUSH PRIVILEGES;    #权限修改立即生效
FLUSH TABLES WITH READ LOCK;    #锁定数据库为只读,确保备份数据一致性
  1. 查看server31的master信息参数,记录下File和position两个参数信息,参见第3步
    show master status;
  2. 切回到server21的MySQL控制台,执行以下命令建立主从同步关系
CHANGE MASTER TO MASTER_HOST='196.168.94.21', MASTER_PORT = 3306, MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=613;
  1. 分别在两台server上执行命令,开始同步
    start slave;
  2. 执行命令show slave status\G查看同步状态信息,查看状态信息中的Slave_IO_Running和Slave_SQL_Running状态为YES即可,如图所示:
    在这里插入图片描述
  3. 执行解开对表的锁定
    unlock tables;
    至此,MySQL的双主从配置就完成了。可以分别在两台机器的数据库上新建表和新插入记录来测试,主从同步是否设置成功。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章