https://dev.mysql.com/doc/refman/5.7/en/
备份主从
server1 master
ps ax
/etc/init.d/mysqld start
cd /data/
ls
cd mysql/
ls
mysqlbinlog mysql-bin.000003
GTID模式:gtid的全称为全局事务标识符(global transaction identifiner),是MySQL 5.6引入的一个特性。gtid保证了MySQL的每一个事务都有一个全局唯一的标识,该标识在本实例甚至主从复制环境都保证全局唯一。
server2
/etc/init.d/mysqld start
mysql -p
use mysql
查看mysql.com
mysql 5.7 reference manual replication
问题:主从复制的一个应用场景,假设主的压力已经很高了,就是指IDEA不要再围绕着主再进行操作了,此时想要备份数据库,应该怎么办?
回答:MYSQL主从就可以做到这件事情。备份主在从机上进行,但是这个对于主没有任何影响。
master–>slave
一旦用复制技术,一定有延迟,网络上也会有延迟。
mysql是将Binlog发送给slave的。有可能会因为网络的因素slave没有收到。
binlog指二进制日志,它记录了数据库上的所有改变,并以二进制的形式保存在磁盘中,它可以用来查看数据库的变更历史、数据库增量备份和恢复、MySQL的复制(主从数据库的复制)。
binlog有三种格式:
statement:基于SQL语句的复制(statement-based replication,SBR)
row:基于行的复制(row-based replication,RBR)
mixed:混合模式复制(mixed-based replication,MBR)
为什么要用gtid的模式?
如果master挂了之后,需要离master数据最近的一个slave来接管数据,那么C将会从B上复制数据,根据原来的方式需要知道B的二进制日志和pos,但因为每个节点复制的延迟是不同的,每个节点记录的二进制文件都不一样。在切换的时候,维护成本较高。
server1 master
ps ax
/etc/init.d/mysqld start
cd /data/
ls
cd mysql/
ls
mysqlbinlog mysql-bin.000003
mysql -p
show master status;
show slave status\G;
stop slave;
#配置GTID模式
找到Setting Up Replication Using GTIDs
server2
ps ax
/etc/init.d/mysqld start
cd /data/mysql/
ls
mysql -p
use mysql
配置GTID模式,复制
到vim /etc/my.cnf中
systemctl restart mysqld
systemctl status mysqld.service
/etc/init.d/mysql restart
mysql -p
show master status;
GTID是全局识别,维护一组GTID,无论在那个节点上,号都是一样的,只是每个人执行到的号不一样。
server2
vim /etc/my.cnf
把上图的代码复制粘贴到my.cnf中,gtid_mode表示要使用gtid声明,enforce…表示强制启用。
/etc/init.d/mysqld restart
mysql -p
show slave status\G;
stop slave;
chang master to master_host='172.25.254.1',master_user='repl',master_password='westos',MASTER_AUTO_POSTION = 1;
start slave;
show slave status\G;
server3
vim /etc/my.cnf
所有的主从节点上都必须加这两个选项。
/etc/init.d/mysqld start
mysql -p
show master status;
stop slave;
chang master to master_host='172.25.254.1',master_user='repl',master_password='westos',MASTER_AUTO_POSTION = 1