symmetric-server-3.8.11实现数据库同步

使用symmetricDS开源软件实现数据库同步

在两台ubuntu虚拟机上实践

第一步,mac上安装ubuntu-server虚拟机,传送门

虚拟机上只需先安装号mysql-server用于实践,
openssh-server用于ssh连接,
安装unzip用于解压。sudo apt install unzip
安装javasdk用于编译 源码sudo apt-get install default-jdk

安装后的环境:

Machine1:10.211.55.14 corp-000

Machine2:192.168.2.128 store-001

第二步,分别在俩机器上下载symmetric-server-3.8.11.zip
wget http://sourceforge.mirrorservice.org/s/sy/symmetricds/symmetricds/symmetricds-3.8/symmetric-server-3.8.11.zip

安装和配置symmetric-server-3.8.11

第一步,解压到/opt/symmetric-server-3.8.11

第二步,在corp端,将SymmetricDS安装副本根目录下的samples目录下的corp-000.properties文件复制到engines目录下,在store-001端,将SymmetricDS安装副本根目录下的samples目录下的store-001.properties文件复制到engines目录下.

修改两个配置文件的数据库信息,为写出的不要改,相同选项的注释掉:
corp:

1
2
3
4
5
6
7
8
# The JDBC URL used to connect to the database,将另一条示例的配置注释掉
db.url=jdbc:mysql://localhost/testdb
# The user to login as who can create and update tables
db.user=root
# The password for the user to login as
db.password=candy
registration.url=
sync.url=http://10.211.55.14:8080/sync/corp-000

store-001:

1
2
3
4
5
6
7
8
# The JDBC URL used to connect to the database,将另一条示例的配置注释掉
db.url=jdbc:mysql://localhost/testdb
# The user to login as who can create and update tables
db.user=root
# The password for the user to login as
db.password=111111
registration.url=http://10.211.55.14:8080/sync/corp-000
sync.url=

第三步,分别在俩机器上创建数据库testdb

1
2
mysql -u root -p登陆
create database testdb;

注: 以下命令操作均在sample文件夹内。

第三步,在corp中央服务器的testdb数据库创建业务表,导入数据,创建系统表。使用软件的样例数据库和数据表

1
2
3
4
5
6
# 业务表
../bin/dbimport --engine corp-000 --format XML /opt/symmetric-server-3.8.11/samples/create_sample.xml
# 系统表
../bin/symadmin --engine corp-000 /opt/symmetric-server-3.8.11/samples/create-sym-tables
# 导入数据
../bin/dbimport --engine corp-000 /opt/symmetric-server-3.8.11/samples/insert_sample.sql

在store-001节点服务器同样创建业务表

1
2
# 业务表
../bin/dbimport --engine corp-000 --format XML /opt/symmetric-server-3.8.11/samples/create_sample.xml

第四步,注册节点

corp端:

1
../bin/symadmin --engine corp-000 open-registration store 001

第五步,启动symmetric

corp端:

1
../bin/sym --engine corp-000 --port 8080

store-001端:

1
../bin/sym --engine store-001 --port 8080

如果报错
org.jumpmind.db.sql.SqlException: The ‘INFORMATION_SCHEMA.SESSION_STATUS’ feature is disabled; see the documentation for ‘show_compatibility_56’
进入mysql,执行set global show_compatibility_56=on;开启show_compatibility_56模式即可

第六步,发起初始负载

开始我们在corp端的数据库的业务表上插入了几条数据,但是store-001上的数据库的业务表都是空的。既然要同步,那我们必须先把这一部分的数据同步,这一部分数据的同步就叫做同步初始负载。要发起这个初始负载同步,要执行下面的命令,还是在ccorp的SymmetricDS安装副本的samples目录下执行

1
../bin/symadmin --engine corp-000 reload-node 001

执行完上面的操作后,就可以看到,store-001中的mysql数据库中的item表已经同步到corp的数据了。

下面在corp端插入随意一条数据到item表

1
2
3
4
mysql -u root p
password:
mysql>use testdb;
mysql>insert into item(item_id,name) values(110000055, 'Soft Drink');

会发现store-001端已经数据同步了。

标准文档传送门

如果您觉得受益了,欢迎打赏鼓励。