在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一. 简介MySQL自带复制方案,带来好处有: 数据备份。 负载均衡。 分布式数据。 概念介绍: 主机(master):被复制的数据库。 从机(slave):复制主机数据的数据库。 复制步骤: 下面放一张经典的图片来说明这一过程: 二. 实现复制实现复制有以下步骤: 1.设置MySQL主库的二进制日志以及server-id MySQL配置文件一般存放在/etc/my.cnf # 在[mysqld]下面添加配置选项 [mysqld] server-id=1 log-bin=mysql-bin.log server-id是数据库在整个数据库集群中的唯一标示,必须保持唯一。 注:如果MySQL配置文件中已经配置过此文件,则可以跳过此步。 2.新建复制账号 在主库里面新建用于从库复制主库数据的账号,并授予复制权限。 mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO user_name@'host' IDENTIFIED BY 'password'; 3.设置MySQL主库server-id 和第二步配置一样,要注意的地方有两点: 如果不需要从库作为别的从库的主库的话,则不需要配置二进制日志。很多时候复制并不需要复制主库的全部数据库(特别是mysql的信息配置库)。因此可以配置replicate_do_db来指定复制的数据库 4.从库初始化主库的数据 如果数据量不算大的情况下,可以使用mysqldump工具导出主库数据,然后导入到从库里面。 mysqldump --single-transaction --triggers --master-data databasename > data.sql 如果数据量大的情况下应该使用Xtrabackup去进行数据库的导出,此处不做介绍。 如果我们主库运行了比较长的一段时间,并不太适合使用从库根据二进制日志进行复制数据,直接使用二进制日志去初始化从库会比较耗费时间和性能。更多的情况下,主库的二进制日志的配置项没有打开,因此也就不存在以前操作的二进制日志。 5.开启复制 从库执行下面命令 mysql> CHANGE MASTER TO MASTER_HOST='host', -> MASTER_USER='user', -> MASTER_PASSWORD='password', -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=0; 注意最后的两个命令:MASTER_LOG_FILE和MASTER_LOG_POS,表示从库的从哪个二进制文件开始读取,偏移量从那里开始,这两个参数可以从我们导入的SQL里面找到。 开启复制 start slave; 这时候就完成了复制,在主库更新一个数据或者新增数据在从库都可以查询到结果。
在主库上也可以查询的到复制线程的状态。 三. 复制的日志格式MySQL复制的日志格式有三种,根据主库存放数据的方式不同有以下三种:
mysql5.7以前默认使用statement格式。 设置方式,可以在配置文件设置(首选): binlog_format=ROW 或临时设置全局变量(当前mysql连接有效): 查看日志格式 mysql > show variables like 'binlog_format'; 设置日志格式 mysql > set binlog_format='row'; 由于两个主从服务器一般都会放在同一个机房里面,两者之间同步的速度会会比较快,为保证强一致性,应该首选行的日志格式记录(row),保证传输素速度可以选择混合方式(mixed)。
|
请发表评论