mysql迁移到postgresql,通过chameleon工具迁移问题合集

1.1 python3环境问题

1.1.1 pip is configured with locations that require TLS/SSL问题

OpenSSL与python3版本不兼容,需要先安装openssl,再安装python3

https://www.cnblogs.com/jasonLiu2018/articles/10730605.html

1.1.2 python3版本问题

推荐安装python3 3.7以上版本,测试发现python3-3.6.9版本安装工具时报错,pthon3-3.7.1安装时正常。

1.1.3 pip3升级超时问题

加超时时间

pip --default-timeout=800 install --upgrade pip

1.2.chameleon工具安装

1.2.1推荐使用源码安装方法,使用工具安装可能会出现如下报错

1.2.2 使用git下载源码时需要指定SSH公钥

https://code84.com/248901.html

1.3 mysql设置

1.3.1 连接账号需要授权

grant all privileges on *.* to 'test'@'%' with grant option; # 赋予全部的权限

1.3.2 修改/etc/my.cnf文件

开启binlog日志,gtid_mode 开启GTID复制功能

/etc/my.cnf文件中添加如下配置(顺序有要求):

gtid-mode=on

enforce-gtid-consistency=1

log-slave-updates=1

log_bin=/usr/local/mysql/log/bin-log

server-id=1

添加后重启mysql服务

1.4 cmdb数据库设置

1.4.1 pg_hba.conf文件设置

确认postgresql.conf文件下password_encryption_type参数为1

#Password storage type, 0 is md5 for PG, 1 is sha256 + md5, 2 is sha256 only

pg_hba.conf下设置允许ip访问cmdb

# IPv4 local connections:下添加

host all all 0.0.0.0/0 md5

如果连接cmdb的账号已经添加过,请重新修改密码

1.4.2 新建数据库

create database bladex WITH ENCODING='UTF8' DBCOMPATIBILITY 'B';

说明:encoding与mysql保持一致,DBCOMPATIBILITY设置为B表示兼容mysql,否则同步过程中数据类型会出现问题

1.4.3 schema管理

新建数据库后不需要创建schema,同步工具会自动创建schema,只需要新建数据库即可。

1.5 使用chameleon工具进行同步

1.5.1 配置文件说明

# global settings

pid_dir: '~/.pg_chameleon/pid/'

log_dir: '~/.pg_chameleon/logs/'

log_dest: file

log_level: info

log_days_keep: 10

rollbar_key: ''

rollbar_env: ''

# type_override allows the user to override the default type conversion

# into a different one.

type_override:

# "tinyint(1)":

# override_to: boolean

# override_tables:

# - "*"

# postgres destination connection

pg_conn:

host: "10.1.9.89"

port: "17700"

user: "test"

password: "test@12345"

database: "csm"

charset: "utf8"

sources:

mysql:

readers: 4

writers: 4

db_conn:

host: "10.1.9.89"

port: "3306"

user: "root"

password: "zz12345678"

charset: 'utf8'

connect_timeout: 10

schema_mappings:

csm: sch_test_mysql

limit_tables:

- delphis_mediterranea.foo

skip_tables:

- delphis_mediterranea.bar

grant_select_to:

- usr_readonly

lock_timeout: "120s"

my_server_id: 100

replica_batch_size: 10000

replay_max_rows: 10000

batch_retention: '1 day'

copy_max_memory: "300M"

copy_mode: 'file'

out_dir: /tmp

sleep_loop: 1

on_error_replay: continue

on_error_read: continue

auto_maintenance: "disabled"

gtid_enable: false

type: mysql

skip_events:

insert:

- delphis_mediterranea.foo # skips inserts on delphis_mediterranea.foo

delete:

- delphis_mediterranea # skips deletes on schema delphis_mediterranea

update:

keep_existing_schema: No

migrate_default_value: Yes

column_case_sensitive: Yes

mysql_restart_config: Yes

默认配置type_override会将tinyint转为boolean类型,可以注释,否则数据同步时tinyint为2时会insert失败

schema_mappings参数,前面为mysql数据库,后面为cmdb的schema,些schema会自动创建。

1.5.2 AttributeError: 'mysql_source' object has no attribute 'mysql_restart_config’

检查配置文件是否缺少mysql_restart_config参数

1.5.3 同步命令

chameleon drop_replica_schema --config default --source mysql --debug

chameleon create_replica_schema --debug

chameleon add_source --config default --source mysql --debug

chameleon init_replica --config default --source mysql --debug

建议先执行一次drop_replica_schema命令,如果直接执行过init_replica命令,不执行drop_replica_schema而直接再次执行init_replica,会出现命令执行成功但数据没有同步的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值