mysql 主从复制

Posted xl999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 主从复制相关的知识,希望对你有一定的参考价值。

mysql主从复制(Master-Slave)
mysql主从复制的功能:实时灾备,读写分离

原理:
从库生成两个线程,一个I/O线程,一个SQL线程;
i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;


主服务器:
开启二进制日志
配置唯一的server-id
获得master二进制日志文件名及位置
创建一个用于slave和master通信的用户账号

从服务器:
配置唯一的server-id
使用master分配的用户账号读取master二进制日志
启用slave服务


具体实现过程如下:
一、准备工作:
1.主从数据库版本最好一致
2.主从数据库内数据保持一致

----> master服务器:
# vim /etc/my.cnf
server-id =100                   #服务器ID,唯一,一般取主机ip最后一段
log_bin=/data/binlog/mysql-bin   #二进制日志名称


# 创建账号mysync 赋予该账号有复制的权限[repligation slave]
# mysql -uroot -p
mysql> grant repligation slave on *.* to ‘mysync‘@‘%‘ identified by ‘xl_2020?‘;
mysql> flush privileges;

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000010 | 120      |              |                                    | |
+------------------+----------+--------------+------------------+-------------------+


----> slave服务器:
# vim /etc/my.cnf
server-id=101                      #唯一的服务器ID
# log_bin=/data/binlog/mysql-bin   #从服务器二进制不是必须的,可以不开启

mysql> stop slave;                 # 默认slave是开启的,需先停止
mysql> change master to
-> master_host=‘192.168.0.102‘,    # master的IP
-> master_user=‘mysync‘,           # master授权的连接账号
-> master_password=‘xl_2020?‘,
-> master_log_file=‘mysql-bin.000010‘,   # 在master上命令show master status;查询file和position值
-> master_log_pos=120;

mysql> start slave;                # 开启slave

mysql> show slave statusG;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.102
Master_User: mysync
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000010
Read_Master_Log_Pos: 490
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000010
Slave_IO_Running: Yes             # IO线程为YES状态正常
Slave_SQL_Running: Yes            # SQL线程为YES状态为正常



---------------------------------------------------------------------------------->
参数解释: MASTER_HOST : 设置要连接的主服务器的ip地址
       MASTER_USER : 设置要连接的主服务器的用户名
       MASTER_PASSWORD : 设置要连接的主服务器的密码
       MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称
       MASTER_LOG_POS  : 设置要连接的主服务器的bin日志的记录位置(不需要加引号否则配置失败)

从库不会同步主库的mysql,test,information_schema 数据库

 




































































以上是关于mysql 主从复制的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中主从复制不同步?

MySQL主从复制和读写分离

MySQL主从复制和读写分离

Linux----------mysql主从复制和基于GTID主从复制

MySQL主从复制

mysql主从复制概述以及配置mysql5.7.10实现简单主从复制