CentOS上搭建MariaDB复制
- 2019 年 10 月 7 日
- 筆記
一直没有自己配置过mysql复制,这两天空闲一些,在电脑上装了免费的VMWare Workstation Player,然后下载CentOS的最新版,开始配置一下。只记录了用到的命令,权当作流水账吧。
1 基础系统
1.1系统信息
# ip addr // 查看IP地址
1.2安装必须软件
# yum searchifconfig # yum installnet-tools # yum installvim # yum installtelnet # yum installwget # yum installgpm // 鼠标驱动 # systemctlenable gpm # systemctlstart gpm
1.3 三台服务器信息
主服务器 : 192.168.5.128/24
从服务器1 : 192.168.5.129/24
从服务器2 : 192.168.5.130/24
2 数据库 MariaDB
主要参考了图书《高性能MySQL》第3版。图书中介绍的是Mysql,但CentOS缺省集成了MariaDB的YUM源,也就懒得换了,直接用MariaDB就好。
2.1数据库基础安装
# yum installmariadb-server; mariadb-client # vim/etc/my.cnf.d/server.cnf [mysqld] init_connect =’SET collation_connection = utf8_unicode_ci’ init_connect =‘SET NAMES utf8’ character-set-server= utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake # vim/etc/my.cnf.d/client.cnf [client] default-character-set= utf8 # vim/etc/my.cnf.d/mysql-client.cnf [client] default-character-set= utf8 # systemctlstart mariadb # systemctlenable mariadb // 系统启动时自动启动 // 初始化mysql 实例 #mysql_secure_installation // 允许 root 远程登陆 # mysql -uroot-p mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY'123456' ; mysql> flush privileges ;
2.2防火墙启用数据库端口
// Centos7 防火墙打开端口号 # firewall-cmd--zone=public --add-port=3306/tcp --permanent # firewall-cmd--reload // 重启firewall # firewall-cmd--list-ports // 查看已经开放的端口 # firewall-cmd--state // 查看默认防火墙状态
2.3MySQL配置主从复制
2.3.1 所有服务器都创建复制账号
# mysql -uroot-p mysql> GRANTREPLICATION SLAVE, -> REPLICATION CLIENT ON *.* -> TO repl@'192.168.5.%' IDENTIFIEDBY 'password';
2.3.2 主服务器配置
# vim/etc/my.cnf.d/server.cnf log_bin =mysql-bin server_id = 128 // 直接用IP地址的最后8位 sync_binlog = 1
2.3.3 从服务器配置
# vim/etc/my.cnf.d/server.cnf # SQL 复制 Slave设置 log_bin =mysql-bin server_id = 129 // 直接用IP地址的最后8位 relay_log =/var/lib/mysql/mysql-relay-bin log_slave_updates= 1 read_only = 1
2.3.4 从服务器启动复制
# mysql -uroot-p // 设置如何连接主库 mysql> CHANGEMASTER TO MASTER_HOST='192.168.5.128', -> MASTER_USER='repl', -> MASTER_PASSWORD='password', -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=0; // 启动复制 mysql> startslave; // 查看复制状态 mysql> showslave status G; Slave_ IO_Running: Yes Slave_ SQL_Running: Yes Seconds_ Behind_Master: 0 // 查看主库的数据库是否已经复制过来 mysql> showdatabases; mysql> use …; mysql> showtables;