下面介绍复制的配置方法,这里是主备的配置。
如果要组成active-active,再加一条复制即可。当然你还需要考虑其他应用分布,数据冲突等更多的问题。
1、修改主库的参数文件
#=================================================================
# Replication Properties
#=================================================================
REPLICATION_PORT_NO = 30300 #用于复制的端口号,两个库配置一致。
REPLICATION_MAX_LOGFILE = 2000 #传送日志数积压上限,当积压数达到这个数之后,就不再同步。
REPLICATION_UPDATE_REPLACE = 1 #为1忽略更新时的数据冲突,0则报错。
REPLICATION_CONNECT_TIMEOUT = 10 #数据库启动之后连接的超时设置,单位秒
REPLICATION_RECEIVE_TIMEOUT = 300 #复制接收超时设置,单位秒
REPLICATION_SYNC_LOG = 0
REPLICATION_LOCK_TIMEOUT = 5
REPLICATION_HBT_DETECT_HIGHWATER_MARK = 10 #复制链路的心跳检测次数上限,>3*10秒,即为心跳超时
REPLICATION_HBT_DETECT_TIME = 3 #复制链路的心跳检测间隔时间,单位秒
REPLICATION_PREFETCH_LOGFILE_COUNT = 10 #发送线程预读取的日志数,加快传送的速度。
REPLICATION_PREFETCHER_RETRY_TIME = 200
REPLICATION_SYNC_MODE = 0 #表示异步传送日志。如果设置为1,则为同步模式。
REPLICATION_SENDER_SLEEP_TIME = 10 #发送线程在空闲的时候转入睡眠的睡眠时间,单位秒。
REPLICATION_KEEP_ALIVE_CNT = 600 #当复制线程随眠次数达到600次,就发送一个keep_alive信号。
REPLICATION_SYNC_TUPLE_COUNT = 20000000 #同步模式下一个线程允许积压的记录数。
备库的参数拷贝主库即可。
2、在复制的两个节点创建同样的用户和同样的表(需要加入到复制中的)。
3、用sys用户创建复制,如果有多个不同用户下的表,那就按用户创建多个用户。
1)在主库创建复制
CREATE REPLICATION REP1 AS MASTER
WITH '192.168.0.2',30300 --192.168.0.2为client端的IP
FROM username.tablename1 to username.tablename1,
FROM username.tablename2 to username.tablename2;
2)在备库创建复制
CREATE REPLICATION REP1 AS slave
WITH '192.168.0.1',30300 --192.168.0.1为server端的IP
FROM username.tablename1 to username.tablename1,
FROM username.tablename2 to username.tablename2;
在这里,复制所使用的网络建议使用一条专用网络。如果数据库的变化量大,则网络压力比较大。一旦因为网络速度跟不上,导致积压,则容易造成主库上的性能问题。
另外一点,复制传送的包体是128K的,为了或得比较好的性能,需要对主机的网络参数做优化。
4、做第一次全同步操作
在主库使用sys用户登录执行:
iSQL>alter replication rep1 sync only parallel 8 ;
并行度的设置与系统的配置和复制的表的数量有关。可以简单设置为core数/2。
在复制的时候,假如我们的并行度设置为8,在同步开始之后,会有8个线程同时被复制8张表,各个线程相互独立。所以同步的时间决定于最后那一张表同步完成的时间。
5、同步完成后,开启同步
在主库和备库开启同步
iSQL>alter replication rep1 start ;
6、变更同步中的表
假如我们同步的表中有月表,每个月都需要增加新的表到同步中,要删除同步中的老表。可以利用alter replication进行操作。
1)在主备库都停掉同步
iSQL>alter replication rep1 stop ;
2)在主备库将不需要同步的老表从复制中去除
iSQL>alter replication rep1 drop table
from username.tablename1 to username.tablename1 ;
iSQL>alter replication rep1 add table
from username.tablename3 to username.tablename3 ;
3)在主备库重启同步
iSQL>alter replication rep1 start ;
如果要组成active-active,再加一条复制即可。当然你还需要考虑其他应用分布,数据冲突等更多的问题。
1、修改主库的参数文件
#=================================================================
# Replication Properties
#=================================================================
REPLICATION_PORT_NO = 30300 #用于复制的端口号,两个库配置一致。
REPLICATION_MAX_LOGFILE = 2000 #传送日志数积压上限,当积压数达到这个数之后,就不再同步。
REPLICATION_UPDATE_REPLACE = 1 #为1忽略更新时的数据冲突,0则报错。
REPLICATION_CONNECT_TIMEOUT = 10 #数据库启动之后连接的超时设置,单位秒
REPLICATION_RECEIVE_TIMEOUT = 300 #复制接收超时设置,单位秒
REPLICATION_SYNC_LOG = 0
REPLICATION_LOCK_TIMEOUT = 5
REPLICATION_HBT_DETECT_HIGHWATER_MARK = 10 #复制链路的心跳检测次数上限,>3*10秒,即为心跳超时
REPLICATION_HBT_DETECT_TIME = 3 #复制链路的心跳检测间隔时间,单位秒
REPLICATION_PREFETCH_LOGFILE_COUNT = 10 #发送线程预读取的日志数,加快传送的速度。
REPLICATION_PREFETCHER_RETRY_TIME = 200
REPLICATION_SYNC_MODE = 0 #表示异步传送日志。如果设置为1,则为同步模式。
REPLICATION_SENDER_SLEEP_TIME = 10 #发送线程在空闲的时候转入睡眠的睡眠时间,单位秒。
REPLICATION_KEEP_ALIVE_CNT = 600 #当复制线程随眠次数达到600次,就发送一个keep_alive信号。
REPLICATION_SYNC_TUPLE_COUNT = 20000000 #同步模式下一个线程允许积压的记录数。
备库的参数拷贝主库即可。
2、在复制的两个节点创建同样的用户和同样的表(需要加入到复制中的)。
3、用sys用户创建复制,如果有多个不同用户下的表,那就按用户创建多个用户。
1)在主库创建复制
CREATE REPLICATION REP1 AS MASTER
WITH '192.168.0.2',30300 --192.168.0.2为client端的IP
FROM username.tablename1 to username.tablename1,
FROM username.tablename2 to username.tablename2;
2)在备库创建复制
CREATE REPLICATION REP1 AS slave
WITH '192.168.0.1',30300 --192.168.0.1为server端的IP
FROM username.tablename1 to username.tablename1,
FROM username.tablename2 to username.tablename2;
在这里,复制所使用的网络建议使用一条专用网络。如果数据库的变化量大,则网络压力比较大。一旦因为网络速度跟不上,导致积压,则容易造成主库上的性能问题。
另外一点,复制传送的包体是128K的,为了或得比较好的性能,需要对主机的网络参数做优化。
4、做第一次全同步操作
在主库使用sys用户登录执行:
iSQL>alter replication rep1 sync only parallel 8 ;
并行度的设置与系统的配置和复制的表的数量有关。可以简单设置为core数/2。
在复制的时候,假如我们的并行度设置为8,在同步开始之后,会有8个线程同时被复制8张表,各个线程相互独立。所以同步的时间决定于最后那一张表同步完成的时间。
5、同步完成后,开启同步
在主库和备库开启同步
iSQL>alter replication rep1 start ;
6、变更同步中的表
假如我们同步的表中有月表,每个月都需要增加新的表到同步中,要删除同步中的老表。可以利用alter replication进行操作。
1)在主备库都停掉同步
iSQL>alter replication rep1 stop ;
2)在主备库将不需要同步的老表从复制中去除
iSQL>alter replication rep1 drop table
from username.tablename1 to username.tablename1 ;
iSQL>alter replication rep1 add table
from username.tablename3 to username.tablename3 ;
3)在主备库重启同步
iSQL>alter replication rep1 start ;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10867315/viewspace-573364/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10867315/viewspace-573364/