1、安装mysql
在linux版本下,mysql称为mariadb,可以选择在线安装,或编译安装。MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
用国内镜像源替换官方的MariaDB镜像源,目前MariaDB最新版本10.4,这里选10.3作为稳定版安装,本人项目或者测试环境,都是以MariaDB为主。
vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
yum install mariadb mariadb-server -y
systemctl restart mariadb
systemctl enable mariadb
mysql_secure_installation
# 该命令为重置root密码,并做一些安全配置,若不做配置,后续将无法使用sell进入mysql
2、配置主备server的my.cnf
通过my.cnf可以优化或者定制更高级的mysql使用,具体参考另外一篇文章todo,这里只写简单主主同步配置
主服务器
[mysqld]
# 数据目录可以使用默认也可以自行定义,所有的binlog以及db物理文件都在datadir里面后期可以通过挂载存储扩容
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=1
# 开启日志模式
log-bin=mysql-bin
relay-log=mysql-relay-bin
# 双主模式下,防止两边插入插入时,自增键冲突,主服务器自增规则:1,3,5奇数自增
auto_increment_offset=1
auto_increment_increment=2
log_slave_updates =1
# 忽略一些测试表
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=performance_schema.%
#出现错误后忽略,若不跳过,出现任何同步错误,slave-IO进程会终止
slave-skip-errors=all
备服务器
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=2
log-bin=mysql-bin
relay-log=mysql-relay-bin
# 双主模式下,防止两边插入插入时,自增键冲突,备服务器自增规则:2,4,6奇数自增
auto_increment_offset=2
auto_increment_increment=2
log_slave_updates =1
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=performance_schema.%
#出现错误后忽略,若不跳过,出现任何同步错误,slave-IO进程会终止
slave-skip-errors=all
3、创建新账户
在主服务器,备服务器分别创建用于管理主备的msyql帐号,请勿用root账户,以免出现安全问题!
mysql -u root -psd123321sd
create user 'sync_acct'@'192.168.100.%' identified by '*&@jall190';
grant replication slave on *.* to 'sync_acct'@'192.168.100.%';
# 以下两条配置可以实现在shell中mysql -usync_acct -p*&@jall190 直接登录,否则会提示如下:
# ERROR 1045 (28000): Access denied for user 'sync_acct'@'localhost' (using password: YES),登录失败
# grant select,insert,update,delete on
GRANT ALL PRIVILEGES ON *.* TO sync_acc@"127.0.0.1" IDENTIFIED BY "*&@jall190" WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO sync_acc@"localhost" IDENTIFIED BY "*&@jall190" WITH GRANT OPTION;
flush privileges;
exit
# 查看可本地登录的记录
MariaDB [(none)]> select HOST,User from mysql.user;
+-----------------------+-----------+
| HOST | User |
+-----------------------+-----------+
| 127.0.0.1 | root |
| 127.0.0.1 | sync_acc |
| 192.168.100.% | sync_acct |
| ::1 | root |
| localhost | root |
| localhost | sync_acc |
| localhost.localdomain | root |
+-----------------------+-----------+
4、查看主服务器bin-log信息
#对数据库进行只读锁定(防止查看二进制日志同时有人对数据库修改操作)
MariaDB [(none)]> flush tables with read lock;
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB