一次mysql迁移至OceanBase操作实战记录
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">前言</a></li><li><a href="#_label1">源库导出前的配置及导出脚本</a></li><li><a href="#_label2">处理导出后的SQL文件</a></li><li><a href="#_label3">目标OceanBase准备及导入操作</a></li><li><a href="#_label4">文参考文档:</a></li></ul></div><p class="maodian"><a name="_label0"></a></p><h2>前言</h2><p>mysqldump 是 MySQL 数据库系统中的一个命令行工具,用于创建 MySQL 数据库的逻辑备份。它能够导出数据库的结构和数据为 SQL 语句文件,这个文件可以用于恢复数据库或在其他服务器上重建数据库。</p>
<p>PS:本次迁移使用了最基本的mysqldump导出进行后续迁移操作。</p>
<p class="maodian"><a name="_label1"></a></p><h2>源库导出前的配置及导出脚本</h2>
<p>本次源数据版本:mysql 8.0.31</p>
<p>导出之前的操作---数据库设置参数:</p>
<div class="jb51code"><pre class="brush:ps;">set persist default_collation_for_utf8mb4=utf8mb4_general_ci;</pre></div>
<p>导出操作:</p>
<div class="jb51code"><pre class="brush:ps;">/mysql/bin//mysqldump -h 192.168.40.129-uroot -p'mysqlpasswd' -P3306 --single-transaction --master-data=2 --set-gtid-purged=OFF --hex-blob --default-character-set=utf8mb4--databases shanjiadb > shanjiadb_to_ob.sql</pre></div>
<p>--single-transaction:确保一致性导出。</p>
<p>--master-data=2:记录 binlog 位置,可用于后续搭建增量同步(如果需要)。</p>
<p>--set-gtid-purged=OFF:如果 MySQL 未开启 GTID,可忽略此选项。</p>
<p class="maodian"><a name="_label2"></a></p><h2>处理导出后的SQL文件</h2>
<p>检查 SQL 文件,可能需要手动修改一些 OceanBase不兼容的DDL或语法(例如,将LOCK语句注释掉).</p>
<p>如果前面没做字符集设置就导出了,可以用下列脚本批量替换:</p>
<div class="jb51code"><pre class="brush:ps;">sed -i 's utf8mb3_general_ci utf8mb4_general_ci g' *.sql
sed -i 's utf8mb4_0900_ai_ci utf8mb4_general_ci g' *.sql
sed -i 'CHARSET=utf8mb3 CHARSET=utf8mb4' *.sql</pre></div>
<p class="maodian"><a name="_label3"></a></p><h2>目标OceanBase准备及导入操作</h2>
<p>前面已经将前期准备做好了,接下来可以在目标端ob数据库进行后续操作了。</p>
<p>在备份的表结构语句里,可能包含外键。在导入 OceanBase MySQL 里时,如果外键依赖的表没有创建,导入脚本会报错,因此在导入之前需要禁用外键检查约束。</p>
<p>使用 source 命令或 mysql 客户端导入。</p>
<div class="jb51code"><pre class="brush:ps;">mysql> use shanjiaobdb;
mysql> source /data/backup/shanjiadb_to_ob.sql;
导入大量数据时,建议先禁用外键检查以提高速度:
SET FOREIGN_KEY_CHECKS=0;
-- 导入操作
SET FOREIGN_KEY_CHECKS=1;</pre></div>
<p>本次的迁移操作,因某方便原因,其他一些细节点,并没有放上去,姑且当个笔记记录吧。</p>
<p class="maodian"><a name="_label4"></a></p><h2>文参考文档:</h2>
<p>https://www.oceanbase.com/docs/common-oceanbase-database-standalone-1000000003577510</p>
頁:
[1]