现在生产环境MySQL数据库是一主一从,由于业务量访问不断增大,故再增加一台从库。前提是不能影响线上业务使用,也就是说不能重启MySQL服务,为了避免出现其他情况,选择在网站访问量低峰期时间段操作。 一般在线增加从库有两种方式,一种是通过mysqldump备份主库,恢复到从库,mysqldump是逻辑备份,数据量大时,备份速度会很慢,锁表的时间也会很长。另一种是通过xtrabackup工具备份主库,恢复到从库,xtrabackup是物理备份,备份速度快,不锁表。为什么不锁表?因为自身会监控主库日志,如果有更新的数据,就会先写到一个文件中,然后再回归到备份文件中,从而保持数据一致性。

服务器 信息:

主库:192.168.18.212(原有) 从库1:192.168.18.213(原有) 从库2:192.168.18.214(新增) 数据库版本:MySQL5.5 存储引擎:Innodb 测试库名:weibo

一、mysqldump方式

MySQL主从是基于binlog日志,所以在安装好数据库后就要开启binlog。这样好处是,一方面可以用binlog恢复数据库,另一方面可以为主从做准备。 原有主库配置参数如下: #vimy.cnf server-id=1#id要唯一 log-bin=mysql-bin#开启binlog日志 auto-increment-increment=1#在Ubuntu系统中MySQL5.5以后已经默认是1 auto-increment-offset=1 slave-skip-errors=all#跳过主从复制出现的错误 1. 主库创建同步账号 mysql>grantallon*.*to'sync'@'192.168.18.%'identifiedby'sync'; 2. 从库配置MySQL #vimy.cnf server-id=3#这个设置3 log-bin=mysql-bin#开启binlog日志 auto-increment-increment=1#这两个参数在Ubuntu系统中MySQL5.5以后都已经默认是1 auto-increment-offset=1 slave-skip-errors=all#跳过主从复制出现的错误 3. 备份主库 #mysqldump-uroot-p123--routines--single_transaction--master-data=2--databasesweibo>weibo.sql 参数说明: --routines:导出存储过程和函数 --single_transaction:导出开始时设置事务隔离状态,并使用一致性快照开始事务,然后unlock tables;而lock-tables是锁住一张表不能写操作,直到dump完毕。 --master-data:默认等于1,将dump起始(change master to)binlog点和pos值写到结果中,等于2是将change master to写到结果中并注释。 4. 把备份库拷贝到从库 #scpweibo.sqlroot@192.168.18.214:/home/root 5. 在主库创建test_tb表,模拟数据库新增数据,weibo.sql是没有的 mysql>createtabletest_tb(idint,namevarchar(30)); 6. 从库导入备份库 #mysql-uroot-p123-e'createdatabaseweibo;' #mysql-uroot-p123weibo<weibo.sql 7. 在备份文件weibo.sql查看binlog和pos值 #head-25weibo.sql --CHANGEMASTERTOMASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107;#大概22行 8. 从库设置从这个日志点同步,并启动 mysql>changemastertomaster_host='192.168.18.212', ->master_user='sync', ->master_password='sync', ->master_log_file='mysql-bin.000001', ->master_log_pos=107; mysql>startslave; mysql>showslavestatusG; ERROR2006(HY000):MySQLserverhasgoneaway Noconnection.Tryingtoreconnect... Connectionid:90 Currentdatabase:***NONE*** ***************************1.row*************************** Slave_IO_State:Waitingformastertosendevent Master_Host:192.168.18.212 Master_User:sync Master_Port:3306 Connect_Retry:60 Master_Log_File:mysql-bin.000001 Read_Master_Log_Pos:358 Relay_Log_File:mysqld-relay-bin.000003 Relay_Log_Pos:504 Relay_Master_Log_File:mysql-bin.000001 Slave_IO_Running:Yes Slave_SQL_Running:Yes ...... 可以看到IO和SQL线程均为YES,说明主从配置成功。 9. 从库查看weibo库里面的表 mysql>showtables; +---------------------------+ |Tables_in_weibo| +---------------------------+ |test_tb| 发现刚才模拟创建的test_tb表已经同步过来!

二、xtrabackup方式(推荐)

在上面配置基础上做实验,先删除掉从库配置: mysql>stopslave;#停止同步 mysql>resetslave;#清除从连接信息 mysql>showslavestatusG;#再查看从状态,可以看到IO和SQL线程都为NO mysql>dropdatabaseweibo;#删除weibo库 此时,从库现在和新装的一样,继续前进! 1. 主库使用xtrabackup备份 #innobackupex--user=root--password=123./ 生成一个以时间为命名的备份目录:2015-07-01_16-49-43 #ll2015-07-01_16-49-43/ total18480 drwxr-xr-x5rootroot4096Jul116:49./ drwx------4rootroot4096Jul116:49../ -rw-r--r--1rootroot188Jul116:49backup-my.cnf -rw-r-----1rootroot18874368Jul116:49ibdata1 drwxr-xr-x2rootroot4096Jul116:49mysql/ drwxr-xr-x2rootroot4096Jul116:49performance_schema/ drwxr-xr-x2rootroot12288Jul116:49weibo/ -rw-r--r--1rootroot21Jul116:49xtrabackup_binlog_info -rw-r-----1rootroot89Jul116:49xtrabackup_checkpoints -rw-r--r--1rootroot563Jul116:49xtrabackup_info -rw-r-----1rootroot2560Jul116:49xtrabackup_logfile 2. 把备份目录拷贝到从库上 #scp-r2015-07-01_16-49-43root@192.168.18.214:/home/root 3. 从库上把MySQL服务停掉,删除datadir目录,将备份目录重命名为datadir目录 #sudorm-rf/var/lib/mysql/ #sudomv2015-07-01_16-49-43//var/lib/mysql #sudochownmysql.mysql-R/var/lib/mysql #sudo/etc/init.d/mysqlstart #ps-ef|grepmysql#查看已经正常启动 mysql88321016:55?00:00:00/usr/sbin/mysqld 4.在主库创建test_tb2表,模拟数据库新增数据 mysql>createtabletest_tb2(idint,namevarchar(30)); 5. 从备份目录中xtrabackup_info文件获取到binlog和pos位置 #cat/var/lib/mysql/xtrabackup_info uuid=201af9db-1fce-11e5-96b0-525400e4239d name= tool_name=innobackupex tool_command=--user=root--password=..../ tool_version=1.5.1-xtrabackup ibbackup_version=xtrabackupversion2.2.11basedonMySQLserver5.6.24Linux(x86_64)(revisionid:) server_version=5.5.43-0ubuntu0.12.04.1-log start_time=2015-07-0116:49:43 end_time=2015-07-0116:49:46 lock_time=1 binlog_pos=filename'mysql-bin.000001',position429#这个位置 innodb_from_lsn=0 innodb_to_lsn=1598188 partial=N incremental=N format=file compact=N compressed=N 6. 从库设置从这个日志点同步,并启动 mysql>changemastertomaster_host='192.168.18.212', ->master_user='sync', ->master_password='sync', ->master_log_file='mysql-bin.000001', ->master_log_pos=429; mysql>startslave; mysql>showslavestatusG; ***************************1.row*************************** Slave_IO_State:Waitingformastertosendevent Master_Host:192.168.18.212 Master_User:sync Master_Port:3306 Connect_Retry:60 Master_Log_File:mysql-bin.000001 Read_Master_Log_Pos:539 Relay_Log_File:mysqld-relay-bin.000002 Relay_Log_Pos:363 Relay_Master_Log_File:mysql-bin.000001 Slave_IO_Running:Yes Slave_SQL_Running:Yes ...... 可以看到IO和SQL线程均为YES,说明主从配置成功。 9. 从库查看weibo库里面的表 mysql>showtables; +---------------------------+ |Tables_in_weibo| +---------------------------+ |test_tb| |test_tb2| 发现刚才模拟创建的test_tb2表已经同步过来。 原文链接: 一、下载 MySQL 首先,去数据 的官网http://www. mysql .com下载 MySQL 。点击进入后的首页如下: 然后点击downloads,community,选择 MySQL Community Server。如下图: 滑到下面,找到Recommended Download,然后点击go to download page。如下图: 点击download进入下载页面选择No thanks, 浏览器打开 背景在 MySQL 5.6 之前从 复制都是单线程的,因此当主 压力比较大,从 访问量也比较大的时候容易出现从 延迟的状况,以下列出了一些造成从 延迟的原因以及可能的解决办法。参考了淘宝内核月报的文章,这篇文章比较好延迟的原因1、内存配置过小或者 iops 配置(这个指的是 io capacity,sas 盘和 ssd 盘配置有区别)不当。2、主 TPS 过高。(从 单线程复制会遇到此问题)3、主 浏览器打开 欢迎使用 mysql 多维数据仓 指南。     数据仓 可以通过集成各种多样的数据实现信息的统一,这些数据来源包括现行的事务操作和管理信息系统,以及外部各种信息源。这些源数据将被整合,清洗,转换,如果需要直接从这些数据来源读取数据的话,该数据将会在数据仓 中以更有利于操作的 方式 存储。     数据仓 的数据构造 方式 使你可以存储当前和历史的数据。当前数据是实际事务操作活动必要的,一般是 浏览器打开 #现有环境是一主一从,需要再 增加 一台从 ,具体方法如下:同步test数据 主:192.168.3.203从1:192.168.3.210从2:192.168.3.2111.在主 服务 器203上面为210和211建立账户。 mysql -uroot -p123grant replication slave on *.* to 'backup'@'192.168.3.210' i... 浏览器打开 1、将主 前一天备份的数据传输到从 机上。主 备份语句加上--master-data=2,记录其change master to信息。2、在从 上导入主 备份数据。 mysql -uroot -ppasswd &lt; bak_20180411.sql3、查看从 上的备份数据:bak_20180411.sql,找到其中的CHANGE MASTER TO字段,记录position。    cat ba... 浏览器打开 项目背景描述:在项目的开始只有一个 MySQL 实例在运行,后期因为安全性,压力,备份等原因需要在此实例的基础上面新增一个从 。分析: MySQL 主从是基于binlog日志来实现的,那么需要主 服务 器开启binlog,此选项默认是关闭。我这边 服务 器在部署的时候就开启了,因为使用binlog可以用来恢复 MySQL 数据,并且还为以后做主从做好准备,所以我们推荐大家在部署主... 浏览器打开 现实情况下, mysql 比较常见的是一主多从,而在主 出现问题是,需要将其从 升为主 ,但事实上这种操作非常繁琐,基本上要对所有的从 进行操作。既然如此,不妨将 mysql 做成ABC的结构,A为主 ,B为A的从 ,C是B的从 这种情况,在A出现问题是,可以直接将B升为主 ,其余下级从 将不需要任何操作。这里记录一次此类操作,我这里的情况是,已经存在A和B,A是主,B是从需求是,添... 浏览器打开 在从 服务 器上执行show slave status;可以查看到很多同步的参数,我们需要特别注意的参数如下:Master_Log_File:                      SLAVE中的I/O线程当前正在读取的主 服务 器二进制日志文件的名称Read_Master_Log_Pos:        在当前的主 服务 器二进制日志中,SLAVE中的I/O线程已经读取的位置Relay_Log_File... 浏览器打开