zyx 发表于 2025-1-2 21:26:10

集群迁移

MySQL容器已有的集群,可以迁移至GreatSQL吗

DB架构师:曾凡坤 发表于 2025-1-3 00:23:16

导出导入应该可以吧

yejr 发表于 2025-1-3 09:53:31

可以的,相同版本是100%兼容的。
不过也要注意你当前MySQL的版本号是哪个,可以参考 https://greatsql.cn/docs/8.0.32-26/7-migrate-and-upgrade/2-migrate-from-mysql-togreatsql.html 这里面还包含了降级操作

在实操过程中,如果遇到问题,可以来社区提问交流,也可以加小助手微信进群,更快获得帮助

reddey 发表于 2025-1-5 10:16:56

通常是可以的

zyx 发表于 2025-1-6 11:35:25

yejr 发表于 2025-1-3 09:53
可以的,相同版本是100%兼容的。
不过也要注意你当前MySQL的版本号是哪个,可以参考 https://greatsql.cn/d ...

mysql和greatsql都是使用的8.0.32,在三台服务器上分别将mysql迁移至GreatSQL,mysql-router就再也启动不起来了

yejr 发表于 2025-1-6 12:33:55

zyx 发表于 2025-1-6 11:35
mysql和greatsql都是使用的8.0.32,在三台服务器上分别将mysql迁移至GreatSQL,mysql-router就再也启动不 ...

具体报错信息是什么
Router连接mysql/greatsql的话,可能需要依托一些系统库表,这些也要跟着迁移过去

zyx 发表于 2025-1-6 15:49:52

yejr 发表于 2025-1-6 12:33
具体报错信息是什么
Router连接mysql/greatsql的话,可能需要依托一些系统库表,这些也要跟着迁移过去 ...

使用mysqldump备份mysql,然后导入到GreatSQL,启动mysql-router报错


MYSQL_CREATE_ROUTER_USER is not set, Router will generate a new account to be used at runtime.
Set it to 0 to reuse root instead.
Succesfully contacted mysql server at node-1:3306. Checking for cluster state.
0
12
Waiting for 3 cluster instances to become available via node-1 (0/12)
Waiting for 3 cluster instances to become available via node-1 (1/12)
Waiting for 3 cluster instances to become available via node-1 (2/12)
Waiting for 3 cluster instances to become available via node-1 (3/12)
Waiting for 3 cluster instances to become available via node-1 (4/12)
Waiting for 3 cluster instances to become available via node-1 (5/12)
Waiting for 3 cluster instances to become available via node-1 (6/12)
Waiting for 3 cluster instances to become available via node-1 (7/12)
Waiting for 3 cluster instances to become available via node-1 (8/12)
Waiting for 3 cluster instances to become available via node-1 (9/12)
Waiting for 3 cluster instances to become available via node-1 (10/12)
Waiting for 3 cluster instances to become available via node-1 (11/12)

yejr 发表于 2025-1-6 16:42:12

zyx 发表于 2025-1-6 15:49
使用mysqldump备份mysql,然后导入到GreatSQL,启动mysql-router报错




mysqldump备份时要加上-A把所有库全部导出才行。

上面提供的信息太少了,请完整描述迁移详细操作过程,包括如何用mysqldump导出的,要详细到每个命令行、参数。

zyx 发表于 2025-1-6 16:54:03

本帖最后由 zyx 于 2025-1-6 16:55 编辑

yejr 发表于 2025-1-6 16:42
mysqldump备份时要加上-A把所有库全部导出才行。

上面提供的信息太少了,请完整描述迁移详细操作过程, ...
#!/bin/bash
echo "开始迁移数据库..."
echo "开始迁移数据库..." >> /usr/local/zts-install.out
install_path=`cat /etc/systemd/system/dp_zts.bat | grep ZTS_PATH=`
install_path=${install_path##*=}

docker exec mysql sh -c 'mysqldump --opt --user=root --password=123456 --port=3306 --set-gtid-purged=OFF --result-file=/opt/sql/dp_mysql_migrate.sql --default-character-set=utf8 --routines dp' >> /usr/local/zts-install.out
docker exec mysql sh -c 'mysqldump --opt --user=root --password=123456 --port=3306 --set-gtid-purged=OFF --result-file=/opt/sql/nacos_mysql_migrate.sql --default-character-set=utf8 --routines nacos-server' >> /usr/local/zts-install.out
docker exec mysql sh -c 'mysqldump --opt --user=root --password=123456 --port=3306 --set-gtid-purged=OFF --result-file=/opt/sql/xxl_job_mysql_migrate.sql --default-character-set=utf8 --routines xxl_job' >> /usr/local/zts-install.out

if [ -f $install_path/ZTS/data/mysql/sql/dp_mysql_migrate.sql ];then
echo "MySQL数据库备份完成,复制备份文件到GreatSQL数据库..." >> /usr/local/zts-install.out 2>&1
cp -f $install_path/ZTS/data/mysql/sql/dp_mysql_migrate.sql $install_path/ZTS/data/greatsql/sql/
cp -f $install_path/ZTS/data/mysql/sql/nacos_mysql_migrate.sql $install_path/ZTS/data/greatsql/sql/
cp -f $install_path/ZTS/data/mysql/sql/xxl_job_mysql_migrate.sql $install_path/ZTS/data/greatsql/sql/
echo "停止MySQL数据库..." >> /usr/local/zts-install.out 2>&1
docker-compose -f $install_path/ZTS/config/docker-compose-yml/docker-compose-mysql.yml -p mysql down >> /usr/local/zts-install.out 2>&1
echo "启动GreatSQL数据库..." >> /usr/local/zts-install.out 2>&1
docker-compose -f $install_path/ZTS/config/docker-compose-yml/docker-compose-greatsql.yml -p greatsql up -d >> /usr/local/zts-install.out 2>&1
if command $install_path/ZTS/install/tools/wait-for-port --host 127.0.0.1 3306 --timeout 1800>/dev/null 2>&1;then
    docker exec greatsql sh -c 'mysql -uroot -p123456 -P3306 dp < /opt/sql/dp_mysql_migrate.sql' >> /usr/local/zts-install.out
    docker exec greatsql sh -c 'mysql -uroot -p123456 -P3306 nacos-server < /opt/sql/nacos_mysql_migrate.sql' >> /usr/local/zts-install.out
    docker exec greatsql sh -c 'mysql -uroot -p123456 -P3306 xxl_job < /opt/sql/xxl_job_mysql_migrate.sql' >> /usr/local/zts-install.out
    echo "数据库迁移完成..."
    echo "数据库迁移完成..." >> /usr/local/zts-install.out
fi
fi

yejr 发表于 2025-1-6 17:01:44

zyx 发表于 2025-1-6 16:54
#!/bin/bash
echo "开始迁移数据库..."
echo "开始迁移数据库..." >> /usr/local/zts-install.out


我上面说了,要加 【"-A"】 导出【全部库表】,因为在mysql和mysql_innodb_cluster_metadata这两个系统库中包含了router元数据信息
页: [1] 2
查看完整版本: 集群迁移