Linux MariaDB 主从复制

安装MariaDB

《安装MariaDB教程》

主从复制

搭建主从复制数据库不能先建数据库,有数据库,需要先删除!!!

Master主数据库

《主从复制详细参数列表》
主服务器MariaDB的/etc/my.cnf配置(没有/etc/my.cnf就创建,改/etc/my.cnf.d/server.cnf是没用的!!!如果指定了datadir和basedir需要同时在my.cnf和server.cnf配置
/etc/my.cnf

[mysqld]
#数据存放目录,/etc/my.cnf的datadir必须和/etc/my.cnf.d/server.cnf的datadir值一致!!!
datadir=/data/mariaDB_data
#编码
character_set_server=utf8

#ssl证书,默认存放在datadir的路径下面,如果更改了datadir的值,则在对应的datadir下面创建ssl文件即可
ssl
ssl-ca=ca.pem
ssl-cert=server-cert.pem
ssl-key=server-key.pem
#服务器ID必选,建议以服务器ip最后一位为id(必选)
server-id=200
#log-bin的名称(可选)
log-bin=mariadb-bin
#进行复制的库。binlog-do-db与binlog-ignore-db为互斥条件,二者存一。(可选)
#binlog-do-db=demo
#不进行主从复制的库(可选)
binlog-ignore-db=mysql,information_schema,performance_schema,sys
#日志格式:MIXED、STATEMENT、ROW(可选)
binlog_format=MIXED
#日志保存天数(可选)
expire_logs_days=30

#从库必选(可选)
relay-log=mariadb-relay
#互为主从必选(可选)
log-slave-updates

#加载密码复杂度审计插件(可选)
plugin-load=simple_password_check.so
#开启密码复杂度(可选)
disconnect_on_expired_password=on
# 密码中至少包含几位数字(可选)
simple_password_check_digits=1
# 密码中至少几位字母(可选)
simple_password_check_letters_same_case=1
# 密码至少几位(可选)
simple_password_check_minimal_length=8
# 密码中特殊符号(非字母和数字)至少几位(可选)
simple_password_check_other_characters=1
#默认密码过期时间 单位天 每过365天就要修改密码(可选)
default_password_lifetime=365
#最大错误登录次数(可选)
max_password_errors=5
#交互式客户端超时退出时长(可选)
interactive_timeout=7200
#非交互式客户端超时退出时长(可选)
wait_timeout=7200

[mariadb]
#安全审计(不建议开启)
log_output=TABLE
general_log

/etc/my.cnf.d/server.cnf

[mysqld]
#数据存放目录,/etc/my.cnf的datadir必须和/etc/my.cnf.d/server.cnf的datadir值一致!!!
datadir=/data/mariaDB_data
character_set_server=utf8

重启主MariaDB,主要是使my.cnf配置文件生效

systemctl restart mariadb

登录MariaDB查询主数据库是否启动bin-log日志

mysql -u root -p
show variables like '%log_bin%';
+---------------------------------+----------------------------------+
| Variable_name                   | Value                            |
+---------------------------------+----------------------------------+
| log_bin                         | ON                               |
| log_bin_basename                | /var/lib/mysql/mariadb-bin       |
| log_bin_compress                | OFF                              |
| log_bin_compress_min_len        | 256                              |
| log_bin_index                   | /var/lib/mysql/mariadb-bin.index |
| log_bin_trust_function_creators | OFF                              |
| sql_log_bin                     | ON                               |
+---------------------------------+----------------------------------+

出现log_bin的lavue是ON代表成功!

查看Master主数据库的状态

show master status;
+--------------------+----------+--------------+------------------+
| File               | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+------------------+
| mariadb-bin.000001 |      330 | demo         |                  |
+--------------------+----------+--------------+------------------+

file的值后面会用到,Binlog_Do_DB就是需要主从复制的数据库。


Slave从数据库

从服务器MariaDB的/etc/my.cnf配置(没有/etc/my.cnf就创建,改/etc/my.cnf.d/server.cnf是没用的!!!如果指定了datadir和basedir需要同时在my.cnf和server.cnf配置
[必填]启用中继日志:relay-log=mariaDB-relay
[必须]MariaDB服务器唯一ID:server-id=2

/etc/my.cnf

[mysqld]
#数据存放目录,/etc/my.cnf的datadir必须和/etc/my.cnf.d/server.cnf的datadir值一致!!!
datadir=/data/mariaDB_data
#编码
character_set_server=utf8

#ssl证书,默认存放在datadir的路径下面,如果更改了datadir的值,则在对应的datadir下面创建ssl文件即可
ssl
ssl-ca=ca.pem
ssl-cert=server-cert.pem
ssl-key=server-key.pem
#服务器ID必选,建议以服务器ip最后一位为id(必选)
server-id=201
#log-bin的名称(可选)
log-bin=mariadb-bin
#进行复制的库。binlog-do-db与binlog-ignore-db为互斥条件,二者存一。(可选)
#binlog-do-db=demo
#不进行主从复制的库(可选)
binlog-ignore-db=mysql,information_schema,performance_schema,sys
#日志格式:MIXED、STATEMENT、ROW(可选)
binlog_format=MIXED
#日志保存天数(可选)
expire_logs_days=30

#从库必选(可选)
relay-log=mariadb-relay
#互为主从必选(可选)
log-slave-updates

#加载密码复杂度审计插件(可选)
plugin-load=simple_password_check.so
#开启密码复杂度(可选)
disconnect_on_expired_password=on
# 密码中至少包含几位数字(可选)
simple_password_check_digits=1
# 密码中至少几位字母(可选)
simple_password_check_letters_same_case=1
# 密码至少几位(可选)
simple_password_check_minimal_length=6
# 密码中特殊符号(非字母和数字)至少几位(可选)
simple_password_check_other_characters=1
#默认密码过期时间 单位天 每过365天就要修改密码(可选)
default_password_lifetime=365
#最大错误登录次数(可选)
max_password_errors=5
#交互式客户端超时退出时长(可选)
interactive_timeout=7200
#非交互式客户端超时退出时长(可选)
wait_timeout=7200

[mariadb]
#安全审计(不建议开启)
log_output=TABLE
general_log

/etc/my.cnf.d/server.cnf

[mysqld]
datadir=/data/mariaDB_data
character_set_server=utf8

重启从MariaDB,主要是使my.cnf配置文件生效

systemctl restart mariadb

登录Slave从数据库进行主从复制配置

Slave从机配置:
MASTER_HOST=主机IP
MASTER_PORT=3306(注意:端口是数字类型,不要加单引号或者双引号
MASTER_USER=主机用户
MASTER_PASSWORD=主机用户密码
MASTER_LOG_FILE=对应上面的File的值
MASTER_LOG_POS=对应上面的Position的值(注意:Position是数字类型,不要加单引号或者双引号
建议创建一个单独用来主从复制的账号,如:copy

CHANGE MASTER TO MASTER_HOST='192.168.1.11',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=330;

启动主从复制

start slave;

正确结果如下:

[anolis@localhost ~]$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.6.10-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

#建议创建一个单独用来主从复制的账号,如:copy
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.1.11',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=330;
Query OK, 0 rows affected (0.008 sec)

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.001 sec)

从库查看主从复制是否成功

SHOW SLAVE STATUS\G;

从库这2个都为Yes才代表成功,有一个是No都不成功!!!
lave_IO_Running: Yes
Slave_SQL_Running: Yes

MariaDB [(none)]> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.56.58
                   Master_User: root
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mariadb-bin.000002
           Read_Master_Log_Pos: 330
                Relay_Log_File: mariaDB-relay.000002
                 Relay_Log_Pos: 557
         Relay_Master_Log_File: mariadb-bin.000002
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes

Slave failed to initialize relay log info structure from the repository错误

解决方法:
从库先停止主从复制,重置主从复制。

停止主从复制

STOP SLAVE;

执行reset slave删除salve数据库的ralaylog日志文件,并重新启用新的relaylog文件

reset slave all;

然后再回到前面登录Slave从数据库进行主从复制配置这个标题重新操作一次!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值