目录
准备,配置数据库主从
启动 MySQL的并配置 Slave 的同步
主从切换
首页 数据库 mysql教程 MySQL 不停服务来启用 innodb_file_per_table_MySQL

MySQL 不停服务来启用 innodb_file_per_table_MySQL

Jun 01, 2016 pm 01:12 PM
空间 网站 项目

InnoDB  是一个非常不错的 MySQL 的存储引擎,目前使用非常广泛基本所有的网站和项目,我想都会优先选择这个,这个也有很好的诊断和微调的工具.我发现其中一个缺点,就是磁盘空间管理时设计非常低效.这个设计成给所有数据都存到 ibdata1 文件,所以这个文件的存储空间会不断的扩展.InnoDB 并不会收缩这些空间,就算你删除表和数据库.

所以我们需要注意我们的配置.最好一开始就使用 innodb_file_per_table 的选项.这样可以使得更加灵活性的给数据存到每个单表的数据库. 我非常不幸地, 最开始我的数据并没有考虑这个所以没有打开这个参数.后来我测试过,在之后打开这个参数根本不能生效.所以只能 dump 整个数据库,然后在启动这个参数后重新恢复数据库才行.这时我们在想有没有法子,不用关掉数据库的服务时就能完成这个工作.

目前看来只能使用 mysqldump 输出,然后才能恢复.所以我们只能使用 MySQL 的主从模式来切换,才能最大限度地减少停机时间.

所以,我使用的基本步骤是:

  • 配置为当前的原始数据库为 Master 数据库.
  • 使用 Xtrabackup 来备份你的原始数据库.
  • 恢复你的备份和到第二个 MySQL 的实例上.
  • 恢复,但不同步,然后运行 mysqldump 在第二个做为 Slave 的数据库上然后导出.
  • 停止第二个数据库实例,并删除数据库.
  • 创建一个新的数据库,使用前面导出的数据来恢复 MySQL 的实例,记得先要打开 innodb_file_per_table 的选项恢复.
  • 配置这个数据库为 slave 然后运行复制.
  • 当复制完成时,给这个 slave 切换成主,然后重新配置你的客户端使用这个实例
  • 现在可以停止主数据库和删除它.

下面是详细的步骤

准备,配置数据库主从

这个看以前的 Blog 有讲怎么在线做 MySQL 的主从.接下来在 Slave 上做转换的操作

Dump 出 Slave 上的数据

假设你根据我以前的文章都做好了.现在配置好 slave 了.记得使用 innobackupex-1.5.1 -apply-log 恢复后,然后复制到数据库的目录.并修改权限.

这时记得先不要设置同步.直接启动数据后.直接使用 MySQL 的 mysqldump 来导出整个数据库.

123 service mysqld start

mysqldump-uroot-p--quick --default-character-set=utf8 bbsee >dump_data.sql

service mysqld stop

创建新的数据库

在新的机器上.安装新的数据库文件.只保留 dump_data.sql.然后使用 mysql_install_db 来建权限数据,MySQL 的数据库

1

mysql_install_db--user=mysql

创建新的配置文件

vim /etc/mysql/my.cnf
登录后复制

添加以下行到新的文件:

innodb_file_per_table = 1server-id = 2bin-log = 1
登录后复制

我在次声明,这是成功的关键,innodb_file_per_table 会让过一会导入的数据按表来存, binlog 是为了以后切主的时候使用.

启动 MySQL的并配置 Slave 的同步

先要启动数据库

1 server mysqld start

恢复导出的数据库

1

mysql-uroot-p --default-character-set=utf8

配置复制
因为刚导入数据库,所以要从现在开始复制,需要在主数据库上根据我以前的文章,给这个设置好权限,然后我们在 Slave 配置一下 slave 的设置

1234567

change mastertomaster_host='127.0.0.1',

master_user='repl',

master_password='passwd',

master_port=3306,

master_log_file='mysql-bin.000001',

master_log_pos=3874;start slave;

这个中的 master_log_file 和 master_log_pos 是根据我以前文章刚开始使用 innobackupex 做主数据备份时 xtrabackup_binlog_info 中的信息

1

mysql-uroot-p-e"show slave status/G"|grep Seconds

当MySQL显示 Seconds_Behind_Master: 0 时,这就 Slave 就同步的和主数据库一样了.

主从切换

现在备份完 Salve 也同步成和主一样,这时因为使用了  innodb_file_per_table 的参数,所以可以切成主了.直接在主数据库中锁一下数据库

1

SETglobalread_only=1;

然后查看主数据库的状态,写 binlog 到那个文件,什么位置了.

1 SHOW master STATUS;

接着到 Slavle 的数据库上看看是不同步到一样的状态了.

1 SHOW slave STATUS /G;

确保主从同步的一样后,先到 Slave 上停止 Slave 的复制变成新的 master,这时才方便切成主,所以要在新的 master上执行

1234 stop slave

change mastertomaster_host=”

reset slavereset maters

之所以要在新的master上执行change master to master_host=”及reset slave,主要是为了断开与老的master之间连接信息.

现在切完了,可以根据以前设置 msater 的经验来给原来的主数据库设置成这个的 slave .也可以给这个重新备份一个出来,在恢复了.

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

有什么学c语言的网站 有什么学c语言的网站 Jan 30, 2024 pm 02:38 PM

学c语言的网站:1、C语言中文网;2、菜鸟教程;3、C语言论坛;4、C语言帝国;5、脚本之家;6、天极网;7、红黑联盟;8、51自学网;9、力扣;10、C Programming。详细介绍:1、C语言中文网,这是一个专门为初学者提供C语言学习资料的网站,内容丰富,包括基础语法、指针、数组、函数、结构体等多个模块;2、菜鸟教程,这是一个综合性的编程学习网站等等。

分享PyCharm项目打包的简易方法 分享PyCharm项目打包的简易方法 Dec 30, 2023 am 09:34 AM

简单易懂的PyCharm项目打包方法分享随着Python的流行,越来越多的开发者使用PyCharm作为Python开发的主要工具。PyCharm是功能强大的集成开发环境,它提供了许多方便的功能来帮助我们提高开发效率。其中一个重要的功能就是项目的打包。本文将介绍如何在PyCharm中简单易懂地打包项目,并提供具体的代码示例。为什么要打包项目?在Python开发

AI攻克费马大定理?数学家放弃5年职业生涯,将100页证明变代码 AI攻克费马大定理?数学家放弃5年职业生涯,将100页证明变代码 Apr 09, 2024 pm 03:20 PM

费马大定理,即将被AI攻克?而且整件事最意味深长的地方在于,AI即将解决的费马大定理,正是为了证明AI无用。曾经,数学属于纯粹的人类智力王国;如今,这片疆土正被先进的算法所破译,所践踏。图片费马大定理,是一个「臭名昭著」的谜题,在几个世纪以来,一直困扰着数学家们。它在1993年被证明,而现在,数学家们有一个伟大计划:用计算机把证明过程重现。他们希望在这个版本的证明中,如果有任何逻辑上的错误,都可由计算机检查出来。项目地址:https://github.com/riccardobrasca/flt

深入了解PyCharm:快速删除项目的方法 深入了解PyCharm:快速删除项目的方法 Feb 26, 2024 pm 04:21 PM

标题:深入了解PyCharm:删除项目的高效方式近年来,Python作为一种强大而灵活的编程语言,受到越来越多开发者的青睐。在Python项目的开发中,选择一个高效的集成开发环境至关重要。PyCharm作为一款功能强大的集成开发环境,为Python开发者提供了诸多便利的功能和工具,其中包括快速、高效地删除项目目录。下面将着重介绍如何使用PyCharm中的删除

PyCharm实用技巧:将项目转换为可执行EXE文件 PyCharm实用技巧:将项目转换为可执行EXE文件 Feb 23, 2024 am 09:33 AM

PyCharm是一款功能强大的Python集成开发环境,提供了丰富的开发工具和环境配置,让开发者能够更高效地编写和调试代码。在使用PyCharm进行Python项目开发的过程中,有时候我们需要将项目打包成可执行的EXE文件,以便在没有安装Python环境的计算机上运行。本文将介绍如何使用PyCharm将项目转换为可执行的EXE文件,同时给出具体的代码示例。首

如何在 Ubuntu 上添加交换空间 22.04 LTS 如何在 Ubuntu 上添加交换空间 22.04 LTS Feb 20, 2024 am 11:12 AM

交换空间在Linux系统中扮演着重要角色,特别是在系统内存不足时。它充当着一个备用的内存存储空间,可以帮助系统平稳运行,即使在负载高的情况下也能保持稳定性。本文为您提供了在Ubuntu22.04LTS上添加交换空间的详细指南,以确保您的系统性能得到优化并能应对各种工作负载。了解交换空间交换空间提供虚拟内存,用于补充系统的物理RAM。当系统的RAM不足时,内核会将数据交换到磁盘,以防止内存不足和系统崩溃。Linux系统常用交换空间来处理这种情况。同时运行多个内存密集型应用程序处理非常大的文件或数据

升级win11需要的C盘空间介绍 升级win11需要的C盘空间介绍 Dec 23, 2023 am 08:57 AM

众所周知,如果系统安装完成后占用系统盘太大,可能会导致系统运行卡顿、延迟,甚至是文件丢失。因此大家在安装win11系统之前,需要了解升级win11需要多大C盘空间,下面就跟着小编一起来看看吧。升级win11需要多大C盘空间:答:升级win11需要20-30GB的C盘空间。1、根据微软的win11配置要求可以看到,win11安装需要64GB的硬盘空间。2、但其实一般来说是不需要这么大的空间的。3、根据已经安装win11的用户反馈,win11升级大概需要20-30GB的C盘空间。4、但是如果我门只有

PyCharm教程:如何在PyCharm中移除项目? PyCharm教程:如何在PyCharm中移除项目? Feb 24, 2024 pm 05:54 PM

PyCharm是一款功能强大的Python集成开发环境(IDE),提供了丰富的功能帮助开发者更高效地编写和管理Python项目。在使用PyCharm开发项目的过程中,有时候我们需要删除一些不再需要的项目以释放空间或清理项目列表。本文将详细介绍如何在PyCharm中删除项目,并提供具体的代码示例。如何删除项目打开PyCharm,进入项目列表界面。在项目列表中,

See all articles