当前位置: 首页 > 科技观察

MySQL不停机不锁表主从构建

时间:2023-03-11 20:37:56 科技观察

mysql主从搭建分几种场景,没有业务数据,有业务数据初建,临时扩容初建很简单,不涉及数据业务,所以锁表、关停等不会影响,但更多时候业务发展到一定阶段,会涉及横向扩展,需要主从、读写分离等方式来提升服务性能。此时数据业务不能中断,需要快速扩容提升性能。它只能在不停止或停止服务的情况下进行扩展。您需要使用下面介绍的方法来使数据库成为主从。当然,还是有先决条件的。如果你连MySQL中binlog和server_id的基本配置都没有做,那么不停止原理就谈不上配置主从。shutdown实现主从构建的要点是以下两个参数:--single-transaction--master-datamaster-data参数主要用于记录master数据库的binlog_file和pos。它有两个值,分别是:1:在mysqldump过程中,sql中记录了binlogfile和pos信息,并没有以comment信息的形式记录,这样这部分信息在执行import的时候自动执行.2:mysqldump过程中以comments的形式记录binlogfile和pos信息SQL中记录的单事务参数是通过提交单事务来保证数据的一致性。通过在FLUSHTABLESWITHREADLOCK之后添加STARTTRANSACTION语句,启动单个事务。此时加锁只是为了获取准确的master-data中的binlogfile和pos信息,事务启动后,锁已经释放,所以对业务影响较小。通过以上两个参数,可以在不长时间锁表的情况下获取到准确的binlogfile和pos信息,从而完成主从配置实战通过mysqldump从主库导出数据mysqldump-uroot-ppassword--single-transaction--master-data=2--databasesdb1db2xxx>databases.sql打包压缩tar-zcvfdatabases.sql.tar.gzdatabases.sql复制到从库scpdatabases.sql.tar.gzroot@slave_ip:/data/sql/下面操作从库中解压tar-zxvfdatabases.sql.tar.gz指南进入数据source/path_to/databases.sql.tar.gz配置主从同步参数changemastertomaster_host='ip',master_user='slave',master_port=port,master_password='password',master_log_file='mysql-bin.file',master_log_pos=POS;其中master_log_file和master_log_pos是通过上面master-data=2参数导出的,启动slave同步在sql文件开头启动slave;查看同步状态showslavestatus\G;通过这种方式,可以在不停止业务的情况下使用这种方式,在保证数据一致性的情况下,快速扩容从库