Mysql 主从复制参数

Mysql 主从复制步骤

  1. 安装数据库(建议5.7以上,支持更多的特性)
  2. 主库配置
  3. 从库配置
  4. 测试和查看日志

安装数据库

yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum install mysql-community-server -y
#安装数据库5.7版本
systemctl enable mysqld
systemctl start mysqld
#启动和自启
grep 'temporary password' /var/log/mysqld.log
#查看初始密码
mysql_secure_installation
#安全初始化,建议开启远程登入

遇到没有初始密码的情况
vi etc/my.cnf
skip-grant-tables
systemctl restart mysqld
登入数据库
mysql -uroot -p #密码为空
update mysql.user set authentication_string=password(‘新密码’)where user=‘root’;

主库配置

必配
server-id = 1
#服务器唯一ID,每个服务器必须不一样,不然会报错
log_bin = mysql-bin
#开启binlog日志功能,可以指定绝对路径,不指定默认在datadir指定目录下
可选
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-do-db = mysqldb
#ignore忽略不写binlog日志的数据库,可以多个
#do指定写binlog日志的数据库,可以多个,不写默认为全部
binlog_format = Row/Statement/Mixed

binlog_format日志存储方式

  • Row:记录每次数据被修改的详细细节,而不是记录sql语句日志
    • 优点:便于查看和理解,不会因为sql特殊语句影响导致无法复制问题

    • 缺点:日志会变得庞大,对于恢复会变得异常缓慢

  • Statement:相对于Row做了改进,只记录sql语句到binlog日志中
    • 优点:日志量变得很小,节省 I/O 以及存储资源,提高性能
    • 缺点:由于 MySQL 现在发展比较快,很多的新功能不断的加入,使 MySQL 的复制遇到了不小的挑战,bug 也就越容易出现
  • Mixed:基于前两种模式的结合
    • 优点:MySQL 会根据执行的每一条具体的 SQL 语句来区分对待记录的日志形式,也就是在 statement 和 row 之间选择一种

整体还是趋向于Mixed混杂模式

查看系统默认格式

show variables like 'binlog_format';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
1 row in set (0.02 sec)

配置用于复制的用户权限

CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE ON *.* TO '用户名'@'%';

查看binlog名称和位置(用于从节点同步开始位置)

mysql> SHOW MASTER STATUS\G;
*************************** 1. row ***************************
             File: mysql-bin.000002
         Position: 613

#文件名:mysql-bin.000002
#位置,这个会随着数据库操作增加,613

从库配置

server-id = 2
#服务id
relay-log = mysql-relay
#开启中继日志,可以指定绝对路径,不指定默认在datadir指定目录下
master_info_repository = TABLE
relay_log_info_repository = TABLE
relay_log_recovery = ON
#以上三个参数用于当从节点宕机复制中途中断,对于从节点来说怎么办?(保证数据最小化丢失)
#1、需要把slave记录的master信息以及slave应用binlog的信息存储到数据库中(原本是存储在文件中),这里的信息不是binlog记录,下面的配置主机信息
#2、当从节点恢复后,需要保持主从数据的一致性,也就是把没有成功的事务进行回滚,确保一致性
select * from mysql.slave_master_info;
select * from mysql.slave_relay_log_info;

配置从库复制的主机信息

CHANGE MASTER TO MASTER_HOST='192.168.26.100',
MASTER_USER='cp',
MASTER_PASSWORD='Aa111111',
MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=154;

测试和查看日志

#查看主从是否正常运行,都为Yes才行
show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes


#启动从服务器复制功能
start slave;

#停止
stop slave;

#重置配置信息
reset master;

#log日志,没有异常输入正常
cat /var/log/mysqld.log  
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页