共计 1867 个字符,预计需要花费 5 分钟才能阅读完成。
基于 GTID 的主从复制数据库
全局身份识别 GTID(global transaction identifier)
为了实现主备数据库的强一致性
GTID = source_id:transaction_id
source_id 表示执行事务的主库
transaction_id 是一个序列号,表示这个主库上执行的第 n 个事务。
server_uuid 是系统自动生成的, 用来的替代 server_id, 因为 source_id 是手工设置的, 可能会有冲突
数据库的安装和初始化
server33,44:
MySQL-community-client-5.7.17-1.el6.x86_64.rpm
mysql-community-common-5.7.17-1.el6.x86_64.rpm
mysql-community-libs-5.7.17-1.el6.x86_64.rpm
mysql-community-libs-compat-5.7.17-1.el6.x86_64.rpm
mysql-community-server-5.7.17-1.el6.x86_64.rpmyum install * -y
/etc/init.d/mysqld start
启动会自动初始化密码, 如果没有显示, 可以去日志中看
tail -n 3 /var/log/mysqld.log
创建 root 用户
mysql> alter user root@localhost identified by ‘Westos+007’;
gtid 主从数据库的配置
server33:
vim /etc/my.cnf
23 server-id=3
24 gtid-mode=ON
25 enforce-gtid-consistency
26
27 log-bin=mysql-bin
28 binlog-do-db=test
29
30 log-slave-updates 授权复制用户在 172.25.88.0 网段
mysql> grant replication slave on *.* to miao@’172.25.88.%’ identified by ‘Westos+007’;
server44:
vim /etc/my.cnf
23 server-id=4
24 read-only
25
26 gtid-mode=ON
27 enforce-gtid-consistency
28
29 log-slave-updates #开启从库改变记录在 log-bin 日志的属性, 从库也可能作其他数据库的主库
将 server33 设置 master,
mysql> change master to master_host=’172.25.88.33′,master_user=’miao’,master_password=’Westos+007′ ,master_auto_position=1;# 自动定位 pos
mysql> start slave;
检验同步是否成功
检验是否为 GTID 模式
GTID 与经典主从的区别
1. 不用手动定位 pos 和 binlog 的位置, 添加参数 master_auto_position= 1 即可
2. 多线程并发复制,Slave-parallel-workers=0,1,2(禁用, 单线程, 两个线程)
master 数据库有改动,比如 DML,存入 bin-log 中,备份到主数据库中,网络 I / O 才去 master 给 slave 去取数据
所以经典模式下一般手动设置给 slave 备份,因为一定要保证主被数据一样,自动容易出问题。推荐使用 mysql5.7
SQL 四种语言
1.DDL(Definition)数据库定义语言
DDL 不需要 commit.
CREATE,ALTER,DROP,TRUNCATE(快速清空 sql 表),COMMENT,RENAME
2.DML(Manipulation)数据操纵语言
DML 需要 commit.
SELECT,INSERT,UPDATE,DELETE,MERGE(更改),CALL,EXPLAIN PLAN,LOCK TABLE
3.DCL(Control)数据库控制语言
GRANT 授权 REVOKE
4.TCL(Transaction Control Language)事务控制语言
SAVEPOINT 设置保存点,ROLLBACK 回滚,SET TRANSACTION
排错: show slave status \G 中 I / O 和 SQL 不为 YES
I/O:selinux,iptables,授权 SQL:主从数据不一致
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-04/142451.htm