网站建设和维护释义,wordpress自动更新表格,app和网站开发人员工作职责,腾讯云的wordpress安装目录一、单个数据库服务器的缺点数据库服务器存在单点问题#xff1b;数据库服务器资源无法满足增长的读写请求#xff1b;高峰时数据库连接数经常超过上限。二、如何解决单点问题增加额外的数据库服务器#xff0c;组建数据库集群#xff1b;同一集群中的数据库服务器需要具有…一、单个数据库服务器的缺点数据库服务器存在单点问题数据库服务器资源无法满足增长的读写请求高峰时数据库连接数经常超过上限。二、如何解决单点问题增加额外的数据库服务器组建数据库集群同一集群中的数据库服务器需要具有相同的数据集群中的任一服务器宕机后其它服务器可以取代宕机服务器。三、MySQL主从复制架构1、主库将变更写入到主库的binlog中一些MySQL版本并不会开启二进制日志所以一定要检查是否开启如果刚开始没有开启后面再进行开启的话需要重启数据库才能生效而且数据库的重启往往会对业务造成很大的影响尽管二进制日志对性能有稍许的影响所以还是建议大家无论是否使用复制功能都要开启MySQL二进制日志因为增量备份也需要二进制日志。2、从库的IO线程在指定位置读取主库binlog内容存储到本地的中继日志(Relay Log)中要完成二进制日志的传输过程MySQL会在从服务器上启动一个工作线程称为IO线程这个IO线程会跟主数据库建立一个普通的客户端连接然后在主服务器上启动一个特殊的二进制转储线程称为binlogdown线程。从库上的IO线程通过这个二进制转储线程来读取主库上的二进制事件如果该事件追赶上主库则会进入sleep状态直到主库发起信号通知有新事件产生时才会被唤醒relay log的格式和binlog格式是完全相同的可以使用mysqlbinlog来读取relay log中的内容。3、从库的SQL线程读取Relay Log日志中的内容并在从库中重放SQL线程所执行的事件我们可以通过配置选项来决定是否要写入到从服务器的二进制日志中。目前MySQL支持两种复制类型基于二进制日志点的复制基于GTID的复制(MySQL5.7推荐使用)四、MySQL主从配置步骤1、配置主从数据库服务器参数有些参数配置后需要数据库重启才能生效为了不影响数据库的正常使用我们最好在服务器上线的同时就把参数都配置好。特别是master服务器的参数更应该作为服务器初始参数来进行配置。master服务器slave 服务器2、在master服务器上创建用于复制的数据库账号用于IO线程连接master服务器获取binlog日志需要* REPLICATION SLAVE** 权限create user replip段 identified by password;grant replication slave on *.* to replip段;3、备份master服务器上的数据并初始化slave服务器数据建议主从数据库服务器采用相同的MySQL版本建议使用全库备份的方式初始化slave数据。采用相同版本的好处我们可以使用全备的方式来初始化slave数据还可以避免不同版本之间的差异造成数据库同步失败的问题。如果我们使用的主从复制的服务器MySQL版本不同则一定要注意master上的版本一定要低于slave服务器不然同步的时候就可能出现错误。由于我们演示过程中的MySQL服务器都是使用的MySQL5.7所以我们可以使用全备的方式进行mysqldump --master-data2 -uroot -p -A --single-transaction -R --triggers4、启动基于日志点的复制链路在slave服务器上运行MySQL命令CHANGE MASTER TOMASTER_HOST master_host_ip,MASTER_USER repl,MASTER_PASSWORD password,MASTER_LOG_FILEmysql_log_file_name,MASTER_LOG_POSxxxxxx;5、启动基于GTID的复制链路GTID全局事务IDGTID可以保证每一个在主上提交的事务在复制集群中可以生成一个唯一的ID值要使用基于GTID的复制我们要在主从复制的配置文件中同时加入以下配置项。MySQL配置gtid_modeon#是否启动gtid模式启动了此模式会在二进制日志中会额外记录每个事务的GTID标识符enforce-gtid-consistency#强制gtid一致性用于保证启动gtid后事务的安全log-slave-updates on#mysql5.6一定要启用参数5.7可以不启用MySQL命令CHANGE MASTER TOMASTER_HOST master_host_ip,MASTER_USER repl,MASTER_PASSWORD password,MASTER_AUTO_POSITION1;GTID复制的限制无法再使用create table ... select语句建立表只能先create表再insert数据无法在事务中使用create temporary table建立临时表无法使用关联更新同时更新事务表和非事务表。4和5中选一个执行即可。五. MySQL主从复制演示1. 先对主服务器进行配置由于主服务器一直在运行着在生产环境中主服务器是很少会重启的如果主服务器重启会造成正常的业务访问的中断所以在服务器启动之前就启动了二进制日志。这里不需要重启主服务器了由于主服务器的默认server_id1我们虽然在配置文件中更改了它的值 但实际运行环境中并没有改变。我们可以查看一下当前server_idmysql show variables like %server_id%;可以通过以下命令动态的进行修改mysql set global server_id 100;2. 再对从服务器进行配置修改完从服务器配置后重启MySQL服务器。如果使用的是MySQL5.7版本的需要注意MySQL5.7增加了server-uuid值默认情况下载auto.cnf文件中如果是使用的镜像的方式安装可能大家的uuid一样 所以需要把auto.cnf文件删除掉。MySQL重启后会自动重新生成uuid的值这样就可以保证不同服务器上的MySQL实例的uuid的值是不一样的如果server-uuid的值相同主从复制会出现问题。以上我们就完成了主从复制的配置接下来我们要在主服务器上建立复制账号。3. 在MySQL主服务器上建立MySQL复制账号mysqlcreate user dba_repl192.168.3.% identified by 123456;mysqlgrant replication slave on *.* to dba_repl192.168.3.%;4. 建立好复制账号以后通过mysql主服务器上的全备初始化从服务器上数据进行全备[rootlocalhost data]# cd /data/db_backup/[rootlocalhost db_backup]# mysqldump -uroot -p --master-data1 --single-transaction --routines --triggers --events --all-databases all.sqlEnter password:将其拷贝到从服务器上[rootlocalhost db_backup]# scp all.sql root192.168.3.101:/root在从服务器上恢复备份进行初始化[rootNode2 ~]# mysql -uroot -p 初始化完成后准备。5. 从服务器进行基于日志点的复制链路的配置mysql change master tomaster_host192.168.3.100,master_userdba_repl,master_password123456,MASTER_LOG_FILEmysql-bin.000017,MASTER_LOG_POS663;MASTER_LOG_FILE和MASTER_LOG_POS的值从全备文件中的CHANGE MASTER中获取以上复制链路的配置完成。启动slavemysql start slave;检查是否启动成功状态mysql show slave status \G显示Relay_Master_Log_File: mysql-bin.000017Slave_IO_RunningYesSlave_SQL_Running: Yes说明启动成功了可以在主服务器上插入数据在从服务上查看数据是否同步过来了。六. 主从复制的一些缺点虽然主从复制增加了一个数据库副本但从数据库和主数据库的数据最终会是一致的。之所以说是最终一致因为MySQL复制是异步的正常情况下主从复制数据之间会有一个微小的延迟。通过这个数据库副本看似解决了数据库单点问题但并不完美因为这种架构下如果主服务器宕机需要手动切换从服务器业务中断不能忍受不能满足应用高可用的要求。如大家对内容有更多想法及建议欢迎留言交流~作者听风来源https://www.cnblogs.com/huchong/p/10253522.html