码迷,mamicode.com
首页 > 数据库 > 详细

mysql 主从复制

时间:2019-01-05 00:14:37      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:file   exe   tin   最好   font   mys   sql   读取   授权   

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 status\G;
*************************** 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 主从复制

标签:file   exe   tin   最好   font   mys   sql   读取   授权   

原文地址:https://www.cnblogs.com/xl999/p/10223047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!