从 MyISAM 迁移到 XtraDB

Aar*_*yen 4 mysql innodb migration documentation xtradb

只是一些关于迁移到 XtraDB 的问题,我在任何地方都找不到。

我的团队一直在使用 MyISAM dbs 进行生产,并且想知道迁移到 Percona 的 XtraDB 有多难,您将如何进行?

我必须先将 MyISAM 迁移到 InnoDB 还是可以直接迁移到 XtraDB?

我在我的 Fedora 机器上安装了带有 XtraDB 包的 Percona 服务器,但文档对如何使用它不是很有帮助,所以我想知道 Percona 只是搭载在标准的 MySQL 安装上还是一个单独的实体?

关于如何解决我的问题的文档链接会很棒。

Rol*_*DBA 5

您可以在之前或之后转换。我更喜欢以前,因为一旦 Percona Server 安装、启动并运行,数据就会准备好。我这样说是因为你必须解决一些关于授权表的麻烦事。(这尤其包括 mysql.user 表,因为 MySQL 5.0 的 mysql.user 表有 37 列,而 MySQL 5.5 的 mysql.user 表有 42 列)我不想先弄乱连接或 SQL Grants 问题。

这是执行 InnoDB 转换的脚本:

步骤 01) 运行这些命令

echo "SET SQL_LOG_BIN = 0;" > /root/ConvertMyISAMToInnoDB.sql
MYSQL_CONN="-u... -p..."
mysql ${MYSQL_CONN} -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;') InnoDBConversionSQL FROM information_schema.tables WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql','performance_schema') ORDER BY (data_length+index_length)" > /root/ConvertMyISAMToInnoDB.sql
Run Code Online (Sandbox Code Playgroud)

该脚本查找所有数据库中的所有表,可以从最小的开始按大小顺序转换它们。

步骤 02) 运行脚本

mysql ${MYSQL_CONN} -A < /root/ConvertMyISAMToInnoDB.sql
Run Code Online (Sandbox Code Playgroud)

步骤 03) 运行此查询

SELECT SUM(data_length+index_length)/POWER(1024,2) RecommendedInnoDBBufferPoolSize
FROM information_schema.tables WHERE engine='InnoDB';
Run Code Online (Sandbox Code Playgroud)

这将为您提供 innodb_buffer_pool_size 的建议(理想的、完美的世界)值。如果此数字超过服务器 RAM 的 75%,则使用 75% 的 RAM。

步骤 04) service mysql stop

步骤 05) rm -f /var/lib/mysql/ib_logfile* /var/lib/mysql/ibdata1

步骤 06) 将以下内容添加到 /etc/my.cnf

[mysqld]
innodb_file_per_table
innodb_buffer_pool_size=<SizeFromStep03>M
innodb_log_file_size=512M
innodb_log_buffer_size=64M
innodb_open_files=4096
innodb_read_io_threads=64
innodb_write_io_threads=64
innodb_io_capacity=5000
key_buffer_size=8M
Run Code Online (Sandbox Code Playgroud)

警告

  • innodb_log_file_size 应该是 innodb_buffer_pool_size 的 25%
  • key_buffer_size 现在可以缩小

步骤 07) service mysql start

这将需要一段时间(2-4 分钟),因为 mysqld 将创建

  • ib_logfile0
  • 格式化它
  • 创建 ib_logfile1
  • 格式化它。

步骤 08) 执行 Percona 升级