自建maridb从库

2020-07-16 12:34:38 浏览数 (1)

虽然云上的数据库已经有了高可用的报障功能了,但是对于某些业务需要更加灵活的数据处理以及其他需求外,需要搭建一个线下的从库来实现,这里实际上腾讯云也给出了一份maridb自建从库的文档,大家也可以按照这里去配置

https://cloud.tencent.com/document/product/237/8636

或者参考这里来安装maridb

https://www.vultr.com/docs/how-to-install-mariadb-10-1-on-centos-7

参考腾讯云配置文档过程如下

1、本次配置涉及服务器配置如下

云linux服务器:centos7.5

云数据库:mariadb10.1.9(高度兼容mysql5.7)

2、配置yum源,这里腾讯云提供了两种yum源,10.0的和10.1版本的,同时注意下,这里yum源内的 baseurl,依据centos系统来做注释。

# MariaDB 10.1 CentOS repository list - created 2016-05-30 02:16 UTC

# http://downloads.mariadb.org/mariadb/repositories/

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.1/centos7-amd64

#baseurl = http://archive.mariadb.org/mariadb-10.1.9/yum/centos6-amd64/

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=0

3、yum安装,国外站点,这个慢的要死,下载耗时大概需要半个小时,这里我们要是遇到版本冲突的话,还是需要提前卸载掉老版本的maridb,我是直接安装的,没有冲突,运气好

4、maridb 安装完毕以后继续搞,安装mydumper

编译安装:yum install make cmake pcre-devel glib2-devel zlib-devel gcc-c

腾讯云提供的安装连接,需要编译安装,但是依赖太多,不一定保证正常安装,我的是在cmake的时候会报错参数不对,这里自己查了下,应该是和安装的扩展包有关系,惭愧的是尝试半天也没有解决,索性直接用rpm包来安装了

rpm包:yum -y install https://github.com/maxbube/mydumper/releases/download/v0.9.3/mydumper-0.9.3-41.el7.x86_64.rpm

地址:https://github.com/maxbube/mydumper/releases

5、安装完毕后继续

删除文件/etc/my.cnf.d/enable_encryption.preset

rm -f /etc/my.cnf.d/enable_encryption.preset

mkdir -p /data/dbdata/{data,tmpdir}

mkdir -p /data/dblogs/relay

修改配置文件/etc/my.cnf.d/server.cnf:

代码语言:javascript复制
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
innodb_page_size=16384
lower_case_table_names=1
server-id=101
innodb_buffer_pool_size=2097152000
skip-name-resolve
datadir = /data/dbdata/data/
relay-log = /data/dblogs/relay/relay.log
log-error = /data/dblogs/mysqld.err
tmpdir = /data/dbdata/tmpdir

注意事项: 在配置这些参数时,可以在原实例上使用show gloabl variabels like xxx来查看原实例的参数做参考。其中:

  • character-set-server、lower_case_table_names、innodb_page_size等参数要和原TDSQL实例一样(上面的配置就行)
  • innodb_buffer_pool_size的值可以参考tdsql的参数
  • server-id要和原TDSQL实例不同
  • 运行mysql_install_db 安装db

  • 修改文件所有者:chown -R mysql:mysql /data/dbdata/ /data/dblogs/
  • 启动mariadb:service mysql start
  • 修改root密码并测试登录: mysqladmin -u root password 'root'; mysql -uroot -proot -hlocalhost -P3306

测试正常

6、创建用于同步的数据库账号

如果准备从主机上同步,创建普通账号,如果从备机上同步,则创建只读账号(建议从备机上进行同步,避免影响主机)。

设置数据库账号的权限至少包含全局SELECT, REPLICATION SLAVE,REPLICATION CLIENT, RELOAD的权限(如果在控制台进行设置权限失败,或者没有所需的权限,请提交工单联系客服为您的同步账号添加所需的权限)。

我这里是用的主实例账号,开通的reload权限

7、使用mydumper导出TDSQL数据(导出数据可以自行指定路径)

myloader 导入数据到本地数据库

8、建立主从同步关系

查看export_tdsql目录中的medata的位点信息

登录自建数据库配置主从

第一次配置的时候密码写错了,直接导致io 线程报错,如下

遇到这种情况,可以单独拿出一个窗口来去mysql 登录测试,看看具体是哪里写的有问题

密码修改好了之后,从库顺利的跑起来了

至此简单同步某个库的搭建测试,顺利跑起来了

后面这种架构下遇到的问题再一一分享,这里就不再做赘述了

0 人点赞