静态网站模板 大气,蓝色创新业务功能展示网页模板,网站搭建免费,扬州网站开发快捷查看指令 ctrlf 进行搜索会直接定位到需要的知识点和命令讲解#xff08;如有不正确的地方欢迎各位小伙伴在评论区提意见#xff0c;博主会及时修改#xff09;
MySQL数据库主从集群搭建 主从复制#xff0c;是用来建立一个和主数据库完全一样的数据库环境#xff0c…快捷查看指令 ctrlf 进行搜索会直接定位到需要的知识点和命令讲解如有不正确的地方欢迎各位小伙伴在评论区提意见博主会及时修改
MySQL数据库主从集群搭建 主从复制是用来建立一个和主数据库完全一样的数据库环境称为从数据库主数据库一般是准实时的业务数据库。 作用: 1.做数据的热备作为后备数据库主数据库服务器故障后可切换到从数据库继续工作避免数据丢失。 2.架构的扩展。业务量越来越大I/O访问频率过高单机无法满足此时做多库的存储降低磁盘I/O访问的频率,提高单个机器的I/O性能。 3.读写分离使数据库能支撑更大的并发。 1–在从服务器可以执行查询工作(即我们常说的读功能)降低主服务器压力;主库写从库读降压。 2–在从服务器进行备份避免备份期间影响主服务器服务;确保数据安全。 基于binlog的主从复制搭建 MySQL提供的主从复制结构种类很多但主库和从库配置方式几乎相同实战中较多使用的为一主一从一主多从模式以下就以一主多从模式为例进行配置 步骤 准备环境 提前准备三台搭建了MySQL以及关闭防火墙的linux,并保证三台MySQL起始数据一致实战中最好是新的mysql方便操作如果无法新建需使用数据备份方式将数据库数据恢复一致 数据库中创建并授权有主从复制权限账户 mysql grant replication slave,reload,super on . to ‘testslave’‘%’ identified by ‘111111’; #监牢模式 mysql flush privileges; #注意:生产环境中密码采用高级别的密码实际生产环境中将’%换成具体的ip #注意该用户理论上只需要主库存在从库不需要创建但在实战中由于各种突发情况从库随时有可能升级为主库所以所有从库也要创建 replication slave拥有此权限可以查看从服务器从主服务器读取二进制日志。 super权限允许用户使用修改全局变量的SET语句以及CHANGE MASTER语句 reload权限必须拥有reload权限才可以执行flush [tables | logs | privileges] 主库的配置 修改数据库配置文件 /etc/my.cnf 保证主库以下两点 1.binlog日志功能打开 2.拥有server-id,并且在该主从复制集群中唯一 重启数据库 #进入主库查看当前主库状态 mysql show master status\G #注意此次查询关注file和position两条信息从库配置时使用 从库的配置 修改数据库配置文件 /etc/my.cnf 保证从库有唯一的server-id 重启数据库 进入从库 #查看从库当前监听主库状态 mysql show slave status\G Empty set (0.00 sec) #默认未开启监听 #执行如下命令 mysql CHANGE MASTER TO MASTER_HOST‘192.168.240.134’, #主库ip MASTER_USER‘testslave’, #主库用户名 MASTER_PASSWORD‘123456’, #主库密码 MASTER_LOG_FILE‘mylog.000001’, #主库配置文件 MASTER_LOG_POS154; #主库日志偏移量 #开启监听 mysql start slave; #查看从库当前监听主库状态 mysql show slave status\G 其余从库做相同配置 配置完成后查看主从复制是否实现 原理 Mysql的主从复制中主要有三个线程masterbinlog dump thread、slaveI/O thread 、SQL threadMaster一条线程和Slave中的两条线程。 masterbinlog dump thread主要负责Master库中有数据更新的时候会按照binlog格式将更新的事件类型写入到主库的binlog文件中。并且Master会创建log dump线程通知Slave主库中存在数据更新这就是为什么主库的binlog日志一定要开启的原因。 I/O thread线程在Slave中创建该线程用于请求MasterMaster会返回binlog的名称以及当前数据更新的位置、binlog文件位置的副本。然后将binlog保存在 「relay log中继日志」 中中继日志也是记录数据更新的信息。 SQL thread也是在Slave中创建的当Slave检测到中继日志有更新就会将更新的内容同步到Slave数据库中这样就保证了主从的数据的同步。 总结
步骤一主库db的更新事件(update、insert、delete)被写到binlog
步骤二从库发起连接连接到主库
步骤三此时主库创建一个binlog dump thread线程把binlog的内容发送到从库
步骤四从库启动之后创建一个I/O线程读取主库传过来的binlog内容并写入到relay log.
步骤五从库还会创建一个SQL线程从relay log里面读取内容将更新内容写入到slave的db.#查看线程 mysql SHOW PROCESSLIST\G 基于GTID的主从复制搭建 全局事务标识global transaction identifiersGTID 是用来代替传统复制的方法GTID复制与普通复制模式的最大不同就是不需要指定二进制文件名和位置。 事务 事务事务是数据库为保证SQL操作完整性而提供的一种机制。保证一个业务对应的多条SQL要么同时成功要么同时失败。 事务的ACID Atomicity 原子性 保证多条SQL要么同时成功要么同时失败。Consistency 一致性 事务执行前后数据的状态是一致的。Isolation 隔离性 并发访问相同数据时不同用户是否可以看到另外一个用户未提交的数据。oracle默认只能看到提交后的。Durability 持久性 一个事务一旦提交它对数据库中数据的改变就是永久性的接下来即使数据库发生故障也不应该对其有任何影响 步骤 准备三台mysql机器环境并且创建mysql并赋予权限同上 主库配置 修改数据库配置文件 /etc/my.cnf 保证以下四点 log-bin/opt/liuyh/log #定义server id master必写 server-id111 #开启binlog日志master必写 gtid_modeON #开启gtid enforce_gtid_consistency1 #强制gtid 重启数据库 3. 从库配置 修改数据库配置文件 /etc/my.cnf server-id112 gtid_modeON enforce_gtid_consistency1 重启数据库 #进入从库 mysql stop slave; #停止数据库监听 Query OK, 0 rows affected (0.01 sec) #设置从库监听信息 mysql change master to master_host‘192.168.240.134’, #主ip 地址 最好用域名 master_user‘testslave’, #主服务上面创建的用户 master_password‘123456’, master_auto_position1; Query OK, 0 rows affected, 2 warnings (0.00 sec) #开启监听 mysql start slave; Query OK, 0 rows affected (0.00 sec) #查看从库监听状态 mysql show slave status\G 其余从库做相同配置 查看主从复制状态