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,会出现命令执行成功但数据没有同步的情况。