博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL主从同步
阅读量:4229 次
发布时间:2019-05-26

本文共 4714 字,大约阅读时间需要 15 分钟。

一、mysql主从同步

1.1 什么 是主从同步
实现数据自动同步的服务结构,结构中分为2种角色
主服务器:接收客户端访问的数据库服务器
从服务器:自动从主库服务器同步数据到本地的数据库服务器

1.2mysql主从同步工作原理
主库必须开binlog日志
从库I/O线程读取(复制)主库的binlog日志的SQL命令到本机的中继日志
从库SQL线程执行本机的中继日志里的SQL命令(重现主库数据操作)

1.3配置mysql主从同步

1)服务器角色
client 50
master 51
slave  52

注:本次实验需192.168.4.50~56共七台虚拟机

```````````````````````````````````````````````````````````````````````````

2)配置主服务器 51
启用binlog日志文件
]#vim /etc/my.cnf

[mysqld]

log_bin=master51(日志文件名)
server_id=51

binlog_format="mixed"  #指定日志格式,本次实验没有用,不用加

...
]#重启
]#mysql -uroot -p888888 -e "show master status"

]#ls /var/lib/mysql/master51.*

用户授权

mysql>grant replication slave on *.* to 用户名@"%" identified by "密码";

查看binlog日志信息

mysql>show master status;
+-----------------+----------+--------------+------------------+-------------------+
| File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| master51.000001 |      440 |              |                  |                   |
+-----------------+----------+--------------+------------------+-------------------+

-------------------------------------------------------------------------------------------------------------------

3)配置从服务器 52

指定server_id
]#vim /etc/my.cnf
[mysqld]
server_id=52     
]#重启

指定主服务器信息
mysql>change master to master_host="192.168.4.51(主服务器ip)",master_user="用户名(主服务器授权的用户)",master_password="密码(主服务器授权的密码)",master_log_file="master51.000001(binlog日志文件名)",master_log_pos=440(偏移量);

启动slave进程

mysql>show slave status;
mysql>start slave;
mysql>show slave status\G;
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

##############################################################

[从库]排错:进去先看mysql>show slave status;     

 Slave_IO_Running: Connecting
 Slave_SQL_Running: Yes
Last_IO_Error:  报错信息....
Last_SQL_Error: 报错信息...

查主服务器是否有该用户

1.密码可能不对:
]#cat /var/lib/mysql/master.info(里面包含用户密码)
mysql>set password for 用户名@"%"=password("新密码");

mysql>stop slave;先关从服务

哪部分错了就改哪部分
mysql>cahnge master to master_user="用户",master_password="密码";
mysql>start slave;

mysql>show slave status;

 Slave_IO_Running: Yes

            Slave_SQL_Running: No

分析:从库执行中继日志文件中的改密码时用户不存在则报错,需在从库增该用户

-------------------------------------------------------------------
2.用户不存在:
 Slave_IO_Running: Connecting
 Slave_SQL_Running: Yes
Last_IO_Error:  报错信息....
Last_SQL_Error: 报错信息...
原因:在主库授权在从库指定的用户
再从库刷新,stop slave;  start slave;  show slave status;

3.用户名写错了
把进程停了,修改用户信息,再启进程
stop slave;
change master to master_user="",master_password="";
start slave;
show slave status\G

4.没有重置初始密码

5.binlog日志文件写错了(或文件前面多写了个空格)

stop slave 
change master to master_file="binlog日志文件";

############################################################

-------从库相关文件:

中继日志文件:/var/lib/mysql/host52(主机名)-relay-bin.index #索引文件
            /var/lib/mysql/host52(主机名)-relay-bin.编号
中继日志信息文件:/var/lib/mysql/relay-log.info
主库信息     :/var/lib/mysql/master.info
删了这类文件=主从还原

1.4验证配置
1)在主服务器添加访问数据的连接用户
create database db7;
grant all on db7.* to 用户名@"%" identitfied by "密码";

2)在客户端连接主服务器,对数据进行操作
mysql>mysql -u用户 -p密码 
3)在从服务器本机查看是否和主服务器的数据一致

二、mysql主从同步模式

2.1 mysql主从同步结构模式
一主一从
一主多从
主从从、主主结构 #通常不单用,和其他软件用做高可用集群

一主多从:1.给当前主服务器51   再配合置一台从服务器53

    2.在没有配置为从服务器之前,要有主服务器上的数据

mysql>source /root/db7.sql  #要在库里操作

    3.设置新增从库主机的server_id
    4.指定主服务器信息
]#mysql -h192.168.4.51 -u主库授权从库的用户名 -p密码 (仅验证是否可以登陆)
本地指定主库信息mysql>change master to masater_host="",master_user="",master_password="",
master_log_file="",master_log_pos=; 参考主服务器的binlog日志
    5.启动slave进程
mysql>start slave;
    6.查看进程信息
mysql>show slave status\G;
  Slave_IO_Running: Yes
  Slave_SQL_Running: Yes

    7.客户端测试

客户端连接主数据库访问数据,执行建库建表插入等操作
分别在从服务器本机查看数据
 

主从从:  给当前的从服务器52 配置1台从服务器54
    配置52(主兼从)
     启用binlog日志
]#vim /etc/my.cnf
log_bin=master52
server_id=52
log_slave_updates 允许链式复制
]#重启

     用户授权

mysql>show slave status\G; 查看原来的从服务状态Yes
mysql>grant replication slave on *.* to 用户名@"%" identified by "密码";
    查看binlog日志信息
mysql>show master status;
     

准备同步:

    完全备份库mysqldump -u -p 库> 文件
    拷贝到从服务器

    配置54(从)
    使用备份文件恢复数据
建库(与主库的完全备份的库名一致)
进库 source 备份数据的文件
    指定server_id
]#vim /etc/my.cnf
server_id=54
]#重启
    指定主库信息

mysql>change master to master_host="",master_user="",master_password="",

master_log_file="",master_log_pos= ;#可参考主库binlog日志信息

mysql> start slave;

mysql> show slave status\G
          Slave_IO_Running: Yes
             Slave_SQL_Running: Yes

    客户端测试

连接第一个主服务器执行操作
查看所有从服务器上的数据变化

主主结构  : 把数据库服务器55和56配为主主

2.2mysql主从复制模式
异步复制模式?
默认的
]主库接受到客户请求后,处理完事务后,立即将结果返给客户端,不去关系从库是否已经接收并处理
客户体验度高,访问从库可能没有数据

全同步复制模式?
]当主库执行完一次事务,且所有从库都接受并处理之后,才返回给客户端
客户体验度差,数据同步好

半同步模式?

]介于两种模式之间,主库执行一次事务后,等待至少一个从库接受并写到relay log中才返回给客户端

2.3 Mysql主从同步常用选项(/etc/my.cnf)

    2.3.1 用于主服务器的配置选项
        binlog_do_db=数据库名 [只允许同步的库]
        binlog_ignore_db=数据库名 [不允许同步的库]
    2.3.2 用于从服务器的配置选项
        log_slave_updates    [记录从库更新,允许链式复制]
        replicate_do_db=库    [仅同步的库]
        replicate_ignore_db=库    [仅不同步的库]
        relay_log=日志名    [自定义中继日志文件名]

 

主库配置选项,适用于master服务器

从库配置选项,适用于slave服务器

 

 

转载地址:http://lriqi.baihongyu.com/

你可能感兴趣的文章
Struts: The Complete Reference, 2nd Edition
查看>>
MCITP Developer: Microsoft SQL Server 2005 Database Solutions Design
查看>>
Text Entry Systems: Mobility, Accessibility, Universality
查看>>
CliffsTestPrep Cisco CCNA
查看>>
Pro PayPal E-Commerce
查看>>
A Guide to MATLAB Object-Oriented Programming
查看>>
Outlook 2007: Beyond the Manual
查看>>
SharePoint 2007 User's Guide: Learning Microsoft's Collaboration and Productivity Platform
查看>>
Word 2007: Beyond the Manual
查看>>
An Introduction to Testing Web Applications with twill and Selenium
查看>>
Accelerated VB 2005
查看>>
Pro Access 2007
查看>>
Excel 2007: Beyond the Manual
查看>>
Windows Vista: Beyond the Manual
查看>>
DotNetNuke For Dummies
查看>>
PCI Compliance: Understand and Implement Effective PCI Data Security Standard Compliance
查看>>
Flash CS3 For Dummies
查看>>
Professional ASP.NET 2.0 AJAX
查看>>
Security+ Study Guide
查看>>
Programming Interviews Exposed: Secrets to Landing Your Next Job
查看>>