虽然云上的数据库已经有了高可用的报障功能了,但是对于某些业务需要更加灵活的数据处理以及其他需求外,需要搭建一个线下的从库来实现,这里实际上腾讯云也给出了一份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:
[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 登录测试,看看具体是哪里写的有问题
密码修改好了之后,从库顺利的跑起来了
至此简单同步某个库的搭建测试,顺利跑起来了
后面这种架构下遇到的问题再一一分享,这里就不再做赘述了