Ale*_*der 5 mysql windows migration mysql-5.5 mysql-5.1
我们有一个在 Windows Server 2008 R2 x64(服务器 A)上运行的 MySQL 5.1 实例复制到 Windows Server 2003 R2(服务器 B)上的另一个 MySQL 5.1 实例。
我们在另一台 Windows Server 2008 R2 x64 机器(服务器 C)上有一个新的 MySQL 5.5 实例。
我想用服务器 C 替换服务器 A。
我的计划是通过像这样“克隆”服务器 B 将服务器 C 设置为服务器 A 的另一个从站:
http://www.redips.net/mysql/add-new-slave/。
之后我打算这样做:
http://blesseddlo.wordpress.com/2011/06/03/convert-mysql-slave-to-master/。
之后我想将服务器 B 的主服务器更改为服务器 C。
这是一种可行的方法吗?有注意事项吗?将 MySQL 5.5 实例设置为 MySQL 5.1 实例的从属时,是否存在兼容性问题?
我不能只是停止一切并使用,mysqldump
因为不会有停机时间,而且我们有大约 25 GB 的数据必须通过千兆 LAN 传输。
我担心的第一个兼容性问题是模式表的布局mysql
。
mysql.user
这是MySQL 5.1 中的布局
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+
39 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
mysql.user
这是MySQL 5.5 中的布局
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
| plugin | char(60) | NO | | | |
| authentication_string | text | NO | | NULL | |
+------------------------+-----------------------------------+------+-----+---------+-------+
42 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
如果您从 MySQL 5.1 进行 mysqldump,请排除该mysql
架构。
如何通过 MySQL Grants 进行移植?像这样:
C:\> set MYSQL_CONN=-uroot -prootpassword
C:\> set GETUSER=GETUSER.sql
C:\> set MAKEGRANTS=MAKEGRANTS.sql
C:\> mysql %MYSQL_CONN% -ANe"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" > %GETUSER%
C:\> mysql %MYSQL_CONN% -AN < %GETUSER% > %MAKEGRANTS%
Run Code Online (Sandbox Code Playgroud)
输出文件将包含用于恢复授权的 SQL。该文件有一个小问题:每一行都需要一个终止分号 ( ;
)。在记事本中打开输出文件 MAKEGRANTS 并在每一行附加一个分号。
将MAKEGRANTS文件移至MySQL 5.5服务器并执行。然后,加载 mysqldump。
有些人可能会反对这种复杂的方法,并说在 MySQL 5.5 上运行mysql_upgrade.exe,特别是如果您加载包含 mysql 模式的 5.1 mysqldump。嘿嘿,这也行。我之前提到的只是我个人的偏好(我的做事方式),因为我喜欢保持 MySQL 5.5 模式表完好无损。
这里有一些有趣的事情:如果所有数据都是 InnoDB 怎么办?您可以在不停机的情况下进行 mysqldump(如下所示):
echo "STOP SLAVE;" > MySQLData.sql
mysqldump -uroot -p --single-transaction --master-data=1 --routines --triggers --databases db1 db2 >> MySQLData.sql
echo "START SLAVE;" >> MySQLData.sql
Run Code Online (Sandbox Code Playgroud)
将此文件移至 MySQL 5.5。机器。在加载 MySQL 5.5 之前,请设置复制但不要运行START SLAVE;
. 加载脚本,它将停止从站,加载数据,然后启动从站。
归档时间: |
|
查看次数: |
325 次 |
最近记录: |