mysql做主从复制

一、定义

主从复制就是建立一个和主数据库完全一样的数据库环境,称为从数据库

二、作用

1、主数据库服务器出现故障后,从数据库可以继续提供服务
2、架构的扩展,业务量越来越大,I/O访问频率过高,单机无法满足,做多库的存储,降低磁盘I/O访问的频率,提高单个服务器的I/O性能
3、读写分离,使数据库支持更大的并发

三、原理

1、数据库有个bin-log的二进制文件,记录了所有的sql语句
2、将主数据库的bin-log文件的sql语句复制到从数据库
3、让从数据库的relay-log重做日志文件中再执行一次这些sql语句
具体围绕三个线程去操作:
主数据库创建一个线程发送二进制文件,从库中,创建一个I/O线程去请求读取主库里的二进制文件,读取之后,创建一个sql线程去执行

四、构建

1、Master主服务器的配置(ip:xx.xx.xx.x1)

a、编辑my.cnf(命令:find / -name my.cnf)

在[mysqld]中注释掉 bind-address = 127.0.0.1 不然mysql无法远程

#bind address = 127.0.0.1

注释掉 binlog_do_db 和 binlog_ignore_db ,则表示备份全部数据库
重启数据库

b、登录主服务器mysql创建从服务器用到的账号和权限

grant replication slave on *.* to 'masterbackup' @'xx.xx.xx.x2' identified by 'masterbackup;

新建密码为masterbackup的masterbackup 用户,并赋予replication slave 权限

c、查看主数据库的状态

主数据库状态
记录file和position,编写以下命令

change master to master_host='xx.xx.xx.x1',master_port=3306,master_user='masterbackup',master_password='masterbackup',master_log_file='mysql-bin.000007',master_log_pos=276;

2、Slave从服务器配置上的配置(xx.xx.xx.x2)

a、编辑my.cnf(命令查找文件位置:find / -name my.cnf)

在[mysqld]中

relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index

重启mysql服务器

b、重启

登录mysql,停止同步命令,stop slave,执行以下命令

change master to master_host='xx.xx.xx.x1',master_port=3306,master_user='masterbackup',master_password='masterbackup',master_log_file='mysql-bin.000007',master_log_pos=276;

重启数据同步 start slave

五、存在的问题

主从不同步的问题,从数据库读的延迟问题,优酷的解决方案是数据库分片,可以参考以下链接了解
读延迟问题解决方案

### StarRocks 内置 MySQL 主从复制配置 #### 添加 BE 节点至 StarRocks 集群 为了确保集群有足够的资源处理来自 MySQL 的数据同步请求,可以通过 MySQL 客户端将 BE 节点添加至 StarRocks 集群。 ```sql ALTER SYSTEM ADD BACKEND "host:port"; ``` 此命令用于向现有的 StarRocks 集群中增加新的后端节点[^1]。 #### 启用持久化主键索引 对于需要高效读写性能以及稳定性的场景,在 StarRocks 中启用 `enable_persistent_index` 参数是非常重要的。这允许系统利用磁盘和内存共同维护主键索引,从而减少对内存的需求并提高稳定性。特别是当使用的磁盘为 SSD 时,推荐设置此选项为 `true`: ```sql SET GLOBAL enable_persistent_index=true; ``` 这一特性自版本 2.3.0 开始被支持,并有助于优化大规模数据集上的查询效率[^3]。 #### 设置 MySQL CDC 连接器 为了让 StarRocks 实现与 MySQL 数据库间的实时增量更新,需下载相应的连接器并将必要的 JAR 文件放置于 Flink 的 lib 目录下。具体来说,针对 MySQL-CDC-Inlong 接口,应放入 `mysql-connector-java:8.0.21.jar` 到 `$FLINK_HOME/lib/`路径内[^2]。 #### 创建表结构映射关系 接下来定义源数据库 (MySQL) 和目标存储 (StarRocks) 表之间的一致性映射。创建对应的外部表来表示 MySQL 中的数据源,并指定其变更捕获机制(CDC)。以下是简化版 SQL 示例: ```sql CREATE EXTERNAL TABLE IF NOT EXISTS mydb.mytable ( id BIGINT, name STRING, age INT ) PARTITIONED BY (`ds` string) WITH ( 'connector' = 'mysql-cdc', 'hostname' = 'localhost', 'port' = '3306', 'username' = 'root', 'password' = 'your_password', 'database-name' = 'source_db', 'table-name' = 'source_table' ); ``` 这段脚本会建立一个名为 `mytable` 的外部表,它能够监听 MySQL 上特定模式下的变化事件,并将其转发给下游消费者即 StarRocks。 #### 执行数据迁移任务 最后一步是提交包含上述 DDL 声明在内的 SQL 文件作为输入参数启动 InLong Sort 流程。通过运行如下 shell 命令即可触发整个过程: ```bash ./bin/flink run -c org.apache.inlong.sort.Entrance \ /path/to/inlong-sort/sort-dist-[version].jar \ --sql.script.file /path/to/sql_script.sql ``` 这里 `/path/to/sql_script.sql` 是指定了所有必要操作的 SQL 文档位置;而 `-c` 参数后面跟的是入口类名称,用来指示程序执行逻辑起点所在的位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值