docs/ops/upgrade.md
pika在2.3.3版本时为了确保同步的可靠性,增加了server-id验证功能,因此pika2.3.3~pika2.3.6与pika2.3.3之前的版本无法互相同步
./nemo_to_blackwidow nemo_db_path(需要读取的备份文件目录配置) blackwidow_db_path(需要生成的新数据文件目录配置) -n(线程数量, 请根据服务器性能酌情配置, 避免消耗过多硬件资源)
例子: 低版本pika目录为pika-demo, 版本为3.0.16的pika目录为pika-new30:
./nemo_to_blackwidow /data/pika-demo/dump/backup-20180730 /data/pika-new30/new_db -n 6
例子: info文件中的信息如下并假设主库ip为192.168.1.1端口为6666:
3s
192.168.1.2
6666
300
17055479
那么slaveof命令应为:
slaveof 192.168.1.1 6666 300 17055479
a.关闭从库的salve-read-only参数确保从库可写
b.程序端修改连接ip为从库地址, 将程序请求全部转向从库
c.在从库断开(slaveof no one)与主库的同步, 完成整个切主操作
./tools/manifest_generator./tools/pika_port/data/pika9221/db,那么单db数据都会存在这个目录下面,但是由于我们目前支持了多db,目录层级比原先多了一层,所以迁移的时候我们需要手动将原先单db的数据挪到/data/pika9221/db/db0当中例子:
旧版本Pika dump的路径为:/data/pika_old/dump/20190517/
新版本Pika db-path的路径为:/data/pika_new/db/
那么我们执行: cp -r /data/pika_old/dump/20190517/ /data/pika_new/db/db0/
例子:
新版本Pika db-path的路径为: /data/pika_new/db/
新版本Pika log-path的路径为:/data/pika_new/log/
那么我们执行: ./manifest_generator -d /data/pika_new/db/db0 -l /data/pika_new/log/log_db0
例子:
旧版本Pika的ip为:192.168.1.1,端口为:9221
新版本Pika的ip为:192.168.1.2,端口为:9222
执行pika_port工具机器的本地ip为:192.168.1.3, 打算使用的端口为:9223
获取的filenum为:100,获取的offset为:999
那么我们执行:./pika_port -t 192.168.1.3 -p 9223 -i 192.168.1.1 -o 9221 -m 192.168.1.2 -n 9222 -f 100 -s 999 -e
在使用pika-port进行同步的过程中我们可以登录主库执行info replication打印出的数据里会发现新增了一条从库信息,他是pika_port工具模仿slave行为与源库进行交互,同时可以通过lag查看他的延迟
当我们与pika3.1或pika3.2进行增量同步的时候,可以对pika3.1或pika3.2进行从库添加操作,这样的话在从库都同步完成之后,我们在源库上查看lag如果为0 或者是很小的时候我们可以将整个集群进行替换,把原来的集群替换掉,把新集群上线
slaveof IP PORT force命令,否则的话从库可能会出现少数据的情况