暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

通过Otter同步MySQL数据

333

作者简介

马听,多年 DBA 经验,对MySQL、 Redis、MongoDB、Go等有一定了解,书籍《MySQL DBA精英实战课》作者,慕课网DBA体系课(https://class.imooc.com/sale/dba)讲师


上周一开始,体系课《DBA数据库工程师》活动(原价1999,限时减500),已经有6位朋友加入学习了。

到目前,总共有139位朋友加入了学习。

上周五,第20周的内容已经更新:

如上图,有一个项目就是讲数据库上云的,这中间就涉及到MySQL数据同步到公有云上,当然,有很多方案,比如阿里云的DTS,我们这一节就来分享一下另外一种方案:通过Otter把机房MySQL数据同步到公有云。

1 测试环境准备

有一套本地MySQL和一套云上的RDS MySQL版。

并在云上的RDS上创建同步用户:

用户名:otter_user

密码:Td9Agcadf7

权限:对所有业务库都有查询权限。

并且给RDS开通外网访问地址。


2 把机房全量数据导入公有云

在机房MySQL备份业务库的所有数据

    mysqldump -uroot -p --set-gtid-purged=OFF --master-data=2 onlinestore >onlinestore.sql
    复制

    在RDS创建业务库onlinestore。

    把数据导入到RDS:

      mysql -hxxx -uotter_user -pTd9Agcadf7 onlinestore <onlinestore.sql
      复制


      3 构造增量数据

      这一步骤,是为了验证Otter是否能同步全备到创建同步这期间的增量数据。

      在机房的MySQL中:

        insert into t1 values (666,666,666);
        复制


        4 准备用来存放Otter元数据的数据库

        Otter本身需要一个实例来存放元数据,我们找一个MySQL实例,先创建用户:

          create user 'otter_rw'@'%' identified with mysql_native_password by 'Yd8G6qG91';
          GRANT all ON otter.* TO 'otter_rw'@'%';
          复制

          再下载Otter的元数据并导入这个实例

            wget https://raw.github.com/alibaba/otter/master/manager/deployer/src/main/resources/sql/otter-manager-schema.sql 


            mysql -uroot -p otter <otter-manager-schema.sql
            复制


            5 安装zookeeper

            Otter允许多个节点之间协同工作,通过zookeeper来解决分布式调度。

            我们就来安装zookeeper

              mkdir /data/zookeeper
              cd /data/zookeeper
              wget https://dlcdn.apache.org/zookeeper/zookeeper-3.9.1/apache-zookeeper-3.9.1-bin.tar.gz


              tar zxvf apache-zookeeper-3.9.1-bin.tar.gz
              cd apache-zookeeper-3.9.1-bin
              cd conf/


              cp zoo_sample.cfg zoo.cfg


              复制


              修改配置文件

                vim zoo.cfg
                复制


                加入(所有zookeeper节点)

                  server.1=192.168.12.161:2888:3888
                  server.2=192.168.12.162:2888:3888
                  server.3=192.168.12.163:2888:3888
                  复制

                  配置myid

                    mkdir /tmp/zookeeper/
                    echo 1 >/tmp/zookeeper/myid
                    复制

                    另外两台机器分别是2和3。

                    启动zookeeper

                      /data/zookeeper/apache-zookeeper-3.9.1-bin/bin/zkServer.sh start
                      复制


                      6 Otter manager部署

                      下载并解压otter manager:

                        cd /data/otter
                        wget https://github.com/alibaba/otter/releases/download/otter-4.2.18/manager.deployer-4.2.18.tar.gz
                        mkdir manager
                        tar zxvf manager.deployer-4.2.18.tar.gz -C manager
                        复制

                        修改配置文件

                          vim data/otter/manager/conf/otter.properties
                          复制

                          修改如下内容:

                            ## otter manager domain name
                            otter.domainName = 192.168.152.70
                            ## otter manager http port
                            otter.port = 8080


                            otter.database.driver.class.name = com.mysql.jdbc.Driver
                            otter.database.driver.url = jdbc:mysql://192.168.152.30:3306/otter
                            otter.database.driver.username = otter_rw
                            otter.database.driver.password = xxx




                            ## default zookeeper address
                            otter.zookeeper.cluster.default = 192.168.152.70:2181
                            复制

                            其中:

                            • otter.domainName 是访问Otter的地址,建议设置成IP;

                            • otter.database.driver  开头的这几个参数,就是Otter元数据使用的MySQL的连接信息;

                            • otter.zookeeper.cluster.default 配置zookeeper的IP和端口。


                            启动otter manager:

                              ./bin/startup.sh
                              复制


                              访问

                                http://IP:9090/
                                复制

                                用户名密码默认都是admin。


                                7 管理页面增加zookeeper

                                点击:机器管理-zookeeper管理-添加

                                将我们前面安装的zookeeper集群配置好:


                                8 Otter Node部署

                                点击:机器管理-Node管理-添加

                                如下图,查看节点的编号,这个编号等会要写入到node的nid文件中

                                安装配置node

                                  wget https://github.com/alibaba/otter/releases/download/otter-4.2.18/node.deployer-4.2.18.tar.gz
                                  cd /data/otter
                                  mkdir node
                                  tar zxvf node.deployer-4.2.18.tar.gz -C node
                                  复制

                                  配置nid,这个就是我们在页面上查看到的node ID

                                    echo 1 > conf/nid
                                    复制


                                    修改配置文件

                                      vim conf/otter.properties
                                      复制

                                      修改manager的地址

                                        ## otter arbitrate & node connect manager config
                                        otter.manager.address = 127.0.0.1:1099
                                        复制

                                        启动node

                                          ./bin/startup.sh
                                          复制

                                          可以查看日志:

                                            tail -f logs/node/node.log
                                            复制

                                            如果显示这个,就表示安装成功

                                              2024-03-07 10:55:00.640 [main] INFO  com.alibaba.otter.node.deployer.OtterLauncher - INFO ## the otter server is running now ......
                                              复制

                                              在到otter manager,看下节点的状态。

                                              如果显示“已启动”,就表示node安装成功。


                                              9 添加数据源

                                              在机房的MySQL中创建用户:

                                                create user 'otter_user'@'%' identified with mysql_native_password by 'Td9Agcadf7';
                                                GRANT all ON *.* TO 'otter_user'@'%';
                                                复制

                                                进到Manager管理页面:

                                                配置管理-数据源配置


                                                先配置同步源,如下图,点击“验证连接数据源”:

                                                用户名密码就是刚才我们创建的:

                                                otter_user

                                                Td9Agcadf7

                                                再配置同步目标:


                                                10 增加数据表配置

                                                这一步,也就是配置要同步的库和表。

                                                配置管理-数据表配置-添加

                                                源端配置如下:

                                                schema name为要同步的库;

                                                table name是要同步的表,(.*)表示同步这个库所有表;

                                                数据源选择我们在第9步添加的数据源。

                                                一般配置完之后,需要点击“查询Schema&Table”按钮验证一下:

                                                目标端

                                                11 配置canal

                                                配置管理-canal配置-添加

                                                这里要注意,需要配置备份时的位点信息,可以去查看上面第2步备份文件onlinestore.sql。


                                                12 添加Channel

                                                同步管理-添加


                                                13 添加pipeline

                                                进到上一步添加的Channel中,添加pipeline。


                                                14 添加映射关系

                                                在点击进入到这个新建的Pipeline中

                                                点击:添加

                                                选择对应的数据表(前者机房MySQL,后者RDS)


                                                15 启动同步

                                                同步管理-在对应的Channel,点击启用

                                                16 确定增量数据有没有同步

                                                在RDS上,执行

                                                  select * from t1;
                                                  复制

                                                  看是否有我们在第3步构造的增量数据。


                                                  17 再测试DDL和DML同步

                                                  机房MySQL执行:

                                                    CREATE TABLE `t2024` (
                                                    `id` int NOT NULL,
                                                    `c1` int DEFAULT NULL,
                                                    `a` int DEFAULT NULL,
                                                    PRIMARY KEY (`id`)
                                                    ) ENGINE=InnoDB;
                                                    insert into t2024 values ( 666,666,666);
                                                    复制

                                                    RDS确定数据:

                                                       select * from t2024;
                                                      复制



                                                      更多MySQL实战项目,欢迎订购小编的DBA体系课

                                                      关注公众号

                                                      回复“高可用”,可获取8篇MySQL高可用文章;

                                                      回复“DBA面试题”,可获取一份DBA面试题PDF。


                                                      点击阅读原文跳转到课程。

                                                      文章转载自MySQL数据库联盟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                      评论