
在主数据库的DDL和DML操作是从二进制日志传送到数据库(binlog)。然后这些日志重新执行(重做),以便从数据库中的数据与主数据库的一致性。
两。主从复制的作用
1。主数据库存在可以从数据库切换到的问题。
2。它可以从数据库级别的阅读和写作中分离出来。
三.您可以从数据库中进行日常备份。
三。复制过程
二进制日志:主数据库的二进制日志
中继日志:从服务器中继日志
第一步:掌握写串口的操作记录到binlog文件每个事务更新数据前。
第二步:药膏打开我/ O线,打开一个普通连接在主,所做的主要工作是binlog转储过程。如果读的进展一直保持的主人,它进入睡眠状态,等待主人来产生一个新的事件的最终目的的我 / O线程写这些事件为中继日志。
第三步:SQL线程读取中继日志并执行日志中的SQL事件,这与主数据库中的数据相一致。
四。主从复制的具体操作
我安装两msyql实例在同一窗口一条不同的道路。因此建议在这里,主人与两MySQL安装的版本一致,虽然我自己是不一致的。
1。修改配置文件my.ini的主人和下属的数据库分别
大师
3306个是MySQL的默认端口号,它不能在主实例中修改。服务器ID是用来指定唯一的ID,不同的MySQL实例不能重复,binlog-do-db指定要复制的数据库和日志本是用来打开二进制日志文件。
药膏
由于主数据库和从数据库将在计算机上运行,端口需要设置为不同,这里是3307
复制DB:需要同步的数据库的名称与主机上的配置一致。
2、创建复制主帐户:市卫达 / 123456
这个新帐户可以查询表mysql.user:
当我第一次操作时,我完成了这里的帐户创建。然而,当它实际上被复制时,它发现副本并没有成功。当我们检查错误,我们发现由掌握斌龙是没有问题的。然后我们看了奴隶的状态。
在线路的最后,有这样一行错误:
利用市卫达帐号无法连接到主,所以它应该是一个binlog没有掌握,导致日志不会产生。
我反复检查帐户和密码,发现没有问题。然后,我搜索相关信息,结果发现当主创建新用户时,有一个操作步骤。
设置新用户或更改密码后,刷新权限需要用于刷新与MySQL相关的系统权限相关表,否则会出现拒绝访问。这是前一个错误的原因。还有另一种方法重新启动MySQL服务器,使新设置生效。
3,目前主要数据库中的数据位置,主要用于复制起始数据后数据的起始位置,但在获取状态值之前,主数据库不能再进行数据修改操作,因此需要有效地设置读锁。
4,主库有数据备份。备份有很多方法。这里没有介绍。你可以参考我的上一篇文章。备份完成后,您可以释放读锁,主库可以编写操作。
5。从数据库开始并恢复刚刚备份的数据。此时,数据库在备份时间点的数据是一致的。
6。数据库中复制行为的相关配置
7。此时配置完成,但它与数据库不同步,需要启动从线程。
8。在主目录中创建表和新数据,并在奴隶中观察:
可以看出,我在主人身上做的一切操作都可以在奴隶身上体现出来,那时奴隶就像是主人的镜子。
五,对主从同步状态的解释
使用从属命令检查:
因为排版太难看,所以我整理如下:
slave_io_state:等待主人发送事件
master_host:127.0.0.1
master_user:市卫达
master_port:3306
connnect_retry:60
master_log_file:mysql-bin.000005
read_master_log_pos:1662
relay_log_file:ae6z ***** -relay-bin.000002
relay_log_pos:1415
slave_io_running:是的
slave_sql_running:是的
---------------------------------------------------------- gorgeous line -------------------------------------------
slave_io_running:是的
slave_sql_running:是的
两个线程之前提到的是两个重要的螺纹上的奴隶参与复制process.yes是正常的,不代表一个例外。
slave_io线程主要份宾隆登录主从的接力内容日志(relay_log)。一般来说,问题发生的概率很小,其中大部分是由于权限或网络问题造成的,因此没有与主机的连接,就像前面提到的那样。
的slave_sql线程负责在中继日志执行SQL,及错误的概率比较大。如果有人手动插入一些从图书馆记录,掌握关键冲突时,主人是同步的。
slave_io_state:等待主人发送事件
此状态表示中继日志已同步,等待主生成一个新事件。
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持。