马哥教育--第十九周

1、主从复制及主主复制的实现

 主从复制实现:

主:

安装mysql

安装过程:略

#开启binlog

vim /etc/my.cnf

server-id=1

log-bin=/app/mysql-binlog/mysql-bin

datadir=/data/mysql
socket=/data/mysql/mysql.sock

log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock

 

重启服务

systemctl restart mysql

查看二进制日志位置:

 

 创建复制用户:

grant replication slave on *.* to repluser@'192.168.11.%' identified by 'bernie';

从节点:

安装相同版本mysql:暗转过程略

vim /etc/my.cnf

#从节点不需要开启log-bin

[mysqld]
server-id=2   #与主节点不同的server-id

read-only=ON
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock

重启服务

systemctl restart mysql

CHANGE MASTER TO   MASTER_HOST='192.168.11.8',   MASTER_USER='repluser',   MASTER_PASSWORD='bernie',   MASTER_PORT=3306,   MASTER_LOG_FILE='mysql-bin.000002',   MASTER_LOG_POS=154;

start slave;

主主复制实现:

主:

vim /etc/my.cnf

[mysqld]
server-id=1
log-bin
auto_increment_offset=1
auto_increment_increment=2
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
重启服务

server mysql restart

创建复制用户:

grant replication slave on *.* to repluser@'192.168.11.%' identified by 'bernie';

查看二进制日志位置:

 

 从:

vim /etc/my.cnf

[mysqld]
server-id=2
auto_increment_offset=2
auto_increment_increment=2
log-bin
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock

service mysql restart

登录mysql执行:

CHANGE MASTER TO   MASTER_HOST='192.168.11.8',   MASTER_USER='repluser',   MASTER_PASSWORD='bernie',   MASTER_PORT=3306,   MASTER_LOG_FILE='localhost-bin.000003',   MASTER_LOG_POS=154;

start slave;

 

2、xtrabackup实现全量+增量+binlog恢复库

 【1】安装percona extrabackup

官网下载RPM包

yum -y install percona-xtrabackup-24-2.4.20-1.el8.x86_64.rpm

mkdir /backup

xtrabackup -uroot -p"magedu" --backup --target-dir=/backup/base  #第一次全备

修改数据

xtrabackup -uroot -pmagedu --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/base #增量备份

修改数据

xtrabackup -uroot -pmagedu --backup --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1 #第二次增量备份

 

数据恢复:

预准备完成备份,此选项--apply-log-only 阻止回滚未完成的事务

xtrabackup --prepare --apply-log-only --target-dir=/backup/base

合并第1次增量备份到完全备份

xtrabackup --prepare --apply-log-only --target-dir=/backup/base --incremental-dir=/backup/inc1

合并第2次增量备份到完全备份:最后一次还原不需要加选项--apply-log-only

复制到数据库目录,注意数据库目录必须为空,MySQL服务不能启动

service mysql stop

rm -rf /data/mysql/

xtrabackup --copy-back --target-dir=/backup/base

chown -R mysql.mysql /data/mysql

service mysql start 

 

3、MyCAT实现MySQL读写分离

三台主机,其中两台主机部署主从同步,过程略

部署mycat

【1】安装java环境

tar xvf jdk-8u251-linux-x64.tar.gz -C /usr/local/src/

ln -s /usr/local/src/jdk1.8.0_251/ /usr/local/jdk

 vim /etc/profile.d/jdk.sh

export JAVA_HOME=/usr/local/jdk

export PATH=$JAVA_HOME/bin:$PATH

 . /etc/profile.d/jdk.sh

java -version

【2】安装部署mycat

tar xvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz  -C /apps

echo 'PATH=/apps/mycat/bin:$PATH' > /etc/profile.d/mycat.sh

source /etc/profile.d/mycat.sh

vim /apps/mycat/conf/server.xml

...省略...
<user name="root"> #连接Mycat的用户名
<property name="password">magedu</property> #连接Mycat的密码
<property name="schemas">TESTDB</property> #数据库名要和schema.xml相
对应  此处的数据库名,是mycat中使用的逻辑名
</user>
</mycat:server>

vim /apps/mycat/conf/schema.xml

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
<dataNode name="dn1" dataHost="localhost1" database="mycat" />        #此处的数据库代表mysql数据库中的库名
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"  #1代表读写分离
writeType="0" dbType="mysql" dbDriver="native" switchType="1"
slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="host1" url="192.168.11.8:3306" user="root" password="123456">
<readHost host="host2" url="192.168.11.18:3306" user="root" password="123456"
/>
</writeHost>
</dataHost>
</mycat:schema>

#重启mycat

mycat restart

注意:要保证能使用root/123456权限成功登录192.168.11.8和192.168.11.28机器上面的mysql数据库。同时, 也一定要授权mycat机器能使用root/123456权限成功登录这两台机器的mysql数据库!!这很重要, 否则会导致登录mycat后,对库和表操作失败!

 

在主数据库中操作:

create database mycat; #创建之前指定的数据库

GRANT ALL ON *.* TO 'root'@'192.168.11.%' IDENTIFIED BY '123456' ;  #创建之前指定的root用户

flush privileges;

 

连接mycat测试

mysql -uroot -pmagedu -h127.0.0.1 -P8066 -DTESTDB

show databases;

use TESTDB;

create table t1(id int);

select @@server_id;

select @@hostname;

posted @ 2021-07-13 00:19  berniee  阅读(47)  评论(0)    收藏  举报