Centos7.5 离线安装MySQL以及AB复制
下载地址
来自Mysql官网,为RPM包安装,不是源码编译安装的方式,下载地址 。
安装
- 卸载自带的mariadb
rpm -qa|grep mariadb
## mariadb-libs-5.5.56-2.el7.x86_64
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
- 解压缩
tar xvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar
- 使用rpm -ivh命令依次进行安装
rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm
- 更改配置文件,设置数据目录,暂时跳过密码登录
cat /etc/my.cnf|grep -v ^#
[mysqld]
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
skip-grant-tables
mkdir /data/mysql
chown mysql:mysql -R /data/mysql
- 启动服务,免密登录后设置密码
mysql -uroot -p
mysql> update mysql.user set authentication_string=password('8QKBZVTPbLeY48H3u6d2h2phZrF6hjRM') where user='root' and Host = 'localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
配置集群
Master 配置
修改配置文件,开启二进制日志并建立唯一的服务器ID
停止mysql进程
service mysqld stop
开启binlog,设置serverid
cat /etc/my.cnf|grep -v ^#
[mysqld]
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin=mysql-bin
server-id=1
开启mysql进程
service mysqld start
创建主从同步用户
mysql -uroot -p
mysql> CREATE USER 'replication'@'172.28.33.10' IDENTIFIED BY '1fH.=OYLJlV7ckO95+FMO7gG';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'172.28.33.10';
mysql> FLUSH PRIVILEGES;
查看binlog File 文件名称和 Position值位置,记录下来下面slave配置要用到
mysql -uroot -p
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 | 631 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
Slave配置
停止mysql进程
service mysqld stop
编辑mysql配置文件
cat /etc/my.cnf|grep -v ^#
[mysqld]
datadir=/data//mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
server-id=2
启动服务
service mysqld start
与Master节点进行通信,上面Master配置最后一步查询到的binlog File 文件名称和 Position值位置,分别配置对应位置。
mysql -uroot -p
CHANGE MASTER TO
-> MASTER_HOST='172.26.75.10',
-> MASTER_USER='replication',
-> MASTER_PASSWORD='1fH.=OYLJlV7ckO95+FMO7gG',
-> MASTER_LOG_FILE='mysql-bin.000003',
-> MASTER_LOG_POS=631;
启动服务器复制线程
mysql> START SLAVE;
Query OK, 0 rows affected (0.00 sec)
查询状态
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.26.75.10
Master_User: replication
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 631
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Slave_IO_State
#从站的当前状态 Slave_IO_Running: Yes
#读取主程序二进制日志的I/O线程是否正在运行 Slave_SQL_Running: Yes
#执行读取主服务器中二进制日志事件的SQL线程是否正在运行。与I/O线程一样 Seconds_Behind_Master
#是否为0,0就是已经同步了