在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.mysql复制概念 指将主数据库的DDL和DML操作通过二进制日志传到复制服务器上,然后在复制服务器上将这些日志文件重新执行,从而使复制服务器和主服务器的数据保持同步。复制过程中一个服务器充当主服务器(master),而一个或多个其它服务器充当从服务器(slaves)。主服务器将更新重新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器、从服务器在日志中读取的最后一次成功更新的位置。从服务器接受从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。 2.复制的用途 通过主从复制(master-slave)的方式来同步数据,再通过读写分离(mysql-proxy)来提升数据库的并发负载能力,或者用来作为主备机的设计,保证在主机停止响应之后在很短的时间内就可以将应用切换到备机上继续运行。 优势: (1)数据库集群系统具有多个数据库节点,在单个节点出现故障的情况下,其他正常节点可以继续提供服务。 3.复制的实现(3种方法) (1)DRBD是一种用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。 Mysql数据库复制操作大概分为以下几个步骤: (1)master启用二进制日志。启用二进制日志的操作在日志管理中有详细的介绍。 4.mysql复制的集中模式 mysql5.1之后的版本中,在复制方面的改进就是引进了新的复制技术——基于行的复制。这种技术就是关注表中发生变化的记录,而非以前的照抄binlog模式。从mysql5.1.12开始,可以用以下3种模式来实现。 (1)基于sql语句的复制(statement-base replication,sbr) 相应的,binlog的格式也有3种:statement、row、mixed。Mbr模式中,sbr模式是默认的。在运行时可以动态地改变binlog的格式。设定主从复制模式的方法非常简单,只要在以前设定复制配置的基础上,再添加一个参数,如下: binlog_format=”statement” #binlog_format=”row” #binlog_format=”mixed” 当然了,也可以在运行时动态修改binlog的格式 Mysql> set session binlog_format=”statement” 5.控制主服务器操作 Master:192.168.11.139 (1)主服务器: mysql> show variables like '%datadir%'; +---------------+--------------------------+ | Variable_name | Value | +---------------+--------------------------+ | datadir | /application/mysql/data/ | +---------------+--------------------------+ 在主服务器上开启二进制日志: mysql> show variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | OFF | +---------------+-------+ row in set (0.00 sec) OFF表示二进制日志是关闭的 开启日志3步骤: ①开启mysql安装目录/my.cnf log_bin[filename] 在该语句中,log-bin说明要开启二进制文件;filename是二进制日志的名字。如果没有指定,默认为主机名后面跟-bin作为文件名,默认存放在datadir目录中。在这里指定binary_log如果只对指定数据库生成二进制文件,则需要添加如下语句 Binlog-do-db=db_name(数据库名称) 如果不对指定数据库生成二进制文件日志,则需要添加如下语句 Binlog-ignore-db-db_name(数据库名称) ③重启mysql服务。可以在mysql安装目录/data文件夹下看到“binary_log.数字编号”文件,如binary_log.00001.以后每重启一次mysql服务,都会重新生成二进制文件,文件名中的数字编号一次增加。 开机成功后,修改mysql的配置文件my.cnf,设置server-id,代码如下 Server-id=1 Binlog-do-db=xscj Binlog-ignore-db=mysql Server-id=1:每一个数据库服务器都要指定一个唯一的server-id,通常主服务器为1,master和slave的server-id不能相同。 Binlog-do-db:表示需要复制的数据库,这里以xscj为例 Binlog-ignore-db:表示不需要复制的数据库 在master上创建复制所需要的用户 mysql> grant replication slave on *.* to rep_user@'%'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec mysql> show master status\G *************************** 1. row *************************** File: binary_log.000001 Position: 303 Binlog_Do_DB: Binlog_Ignore_DB: row in set (0.00 sec) 将master主机的数据备份出来,保存在/data/binary_dump.txt文件中,然后导入到slave从机中去,具体执行语句如下 [root@localhost bin]# mysqldump -h localhost>/data/binary_dump.txt (2)控制从服务器操作 修改从服务器的数据库配置文件,配置如下: Server-id=2 ##设置从服务器id Master-host=192.168.11.129 Master-user=rep_user Master-password= ##设置连接主服务器的密码 Replicate-do-db ##设置你要同步的数据库,可以设置多个 Master-port=<port> ##配置端口号 重启slave,在slave主机的mysql重新执行如下命令,关闭slave服务 Mysql>stop slave; 设置slave实现复制相关的信息,执行如下命令 Mysql>change master to >master_host='', >master_user='', >master_password='', >master_log_file='binary_log.000007', >master_log_pos=120; 输入:show slave status\G用于提供有关从服务器线程的关键参数信息。 常用命令如下
以上就是本文关于Mysql中复制详细解析的全部内容,希望对大家有所帮助。欢迎参阅:mysql中使用instr进行模糊查询方法介绍、mysql查询语句中用户变量的使用代码解析、MySQL操作之JSON数据类型操作详解等,如有不足之处,欢迎留言指出。有问题咱就改,事物不是一成不变的。 |
请发表评论