当前位置: 首页 > news >正文

成都网站优化步骤wordpress 做的人多吗?

成都网站优化步骤,wordpress 做的人多吗?,张家界做网站,想注册个网站做短租房投资多少钱MySQL主从复制架构 一、MySQL集群概述 ##1、集群的主要类型 高可用集群#xff08;High Available Cluster#xff0c;HA Cluster#xff09; 高可用集群是指通过特殊的软件把独立的服务器连接起来#xff0c;组成一个能够提供故障切换#xff08;Fail Over#xff09…MySQL主从复制架构 一、MySQL集群概述 ##1、集群的主要类型 高可用集群High Available ClusterHA Cluster 高可用集群是指通过特殊的软件把独立的服务器连接起来组成一个能够提供故障切换Fail Over功能的集群 2、如何衡量高可用 可用性级别(指标)年度宕机时间描述叫法99%3.65天/年基本可用系统2个999.9%8.76小时/年可用系统3个999.99%52.6分钟/年高可用系统4个999.999%5.3分钟/年抗故障系统5个999.9999%32秒/年容错系统6个9 计算方法 1年 365天 8760小时 99% 8760 * 1% 8760 * 0.01 87.6小时3.65天 99.9 8760 * 0.1% 8760 * 0.001 8.76小时 99.99 8760 * 0.0001 0.876小时 0.876 * 60 52.6分钟 99.999 8760 * 0.00001 0.0876小时 0.0876 * 60 5.26分钟 ##3、常用的集群架构 MySQL Replication MySQL Cluster MySQL Group Replication MGR 5.7.17 多主一从 MariaDB Galera Cluster MHA|Keepalived|HeartBeat|LvsHaproxy等技术构建高可用集群 二、MySQL复制简介 1、什么是MySQL复制 Replication可以实现将数据从一台数据库服务器master复制到一台到多台数据库服务器(slave) 默认情况下属于异步复制所以无需维持长连接 2、 MySQL复制原理重点 简单来说master将数据库的改变写入二进制日志slave同步这些二进制日志并根据这些二进制日志进行数据重演操作实现数据异步同步。 master主 slave从 详细描述 当主从同步配置完毕后 slave端的IO线程发送请求给master端的binlog dump线程 master端binlog dump线程获取二进制日志信息(文件名和位置信息)发送给slave端的IO线程 salve端IO线程获取到的内容依次写到slave端relay log(中继日志)里并把master端的bin-log文件名和位置记录到master.info里 salve端的SQL线程检测到relay log中内容更新就会解析relay log里更新的内容并执行这些操作从而达到和master数据一致 扩展relay log中继日志 作用记录从(slave)服务器接收来自主(master)服务器的二进制日志. 场景用于主从复制 master主服务器将自己的二进制日志发送给slave从服务器slave先保存在自己的中继日志中然后再执行自己本地的relay log里的sql达到数据库更改和master保持一致。 如何开启 默认中继日志没有开启可以通过修改配置文件完成开启如下 # vim my.cnf [mysqld] #指定二进制日志存放位置及文件名 relay-log/mysql_3306/data/relaylog 3、MySQL复制架构 ㈠ 双机热备AB复制 默认情况下master接受读写请求slave只接受读请求以减轻master的压力。 ㈡ 级联复制 优点进一步分担读压力 缺点slave1 出现故障后面的所有级联slave服务器都会同步失败 ㈢ 并联复制一主多从 优点解决上面的slave1的单点故障同时也分担读压力 缺点间接增加master的压力传输二进制日志压力 ㈣ 双主复制了解 特点 从命名来看两台master好像都能接受读、写请求但实际上往往运作的过程中同一时刻只有其中一台master会接受写请求另外一台接受读请求。 三、MySQL主从复制的搭建AB复制 ##1、传统AB复制架构(M-S) 说明在配置MySQL主从架构时必须保证数据库的版本高度一致统一版本为5.7.31 2、环境规划 编号主机名称主机IP地址角色信息1master.itcast.cn10.1.1.10MASTER主服务器2slave.itcast.cn10.1.1.100SLAVE从服务器 3、安装前准备工作 第一步克隆两台全新的数据库服务器MASTER/SLAVE 第二步首先启动MASTER然后启动SLAVE更改主机名称 Master # hostnamectl set-hostname master.itcast.cn # su Slave # hostnamectl set-hostname slave.itcast.cn # su 第三步更改静态IP配置把Master和Slave都配置与规划一致然后关闭NetworkManager Master # vim /etc/sysconfig/network-scripts/ifcfg-ens33 ... IPADDR10.1.1.10 ... Slave # vim /etc/sysconfig/network-scripts/ifcfg-ens33 ... IPADDR10.1.1.10 ... Master/Slave # systemctl stop NetworkManager # systemctl disable NetworkManager 设置完成后重启网络然后使用MX连接Master与Slave。 第四步由于两台机器处于集群架构需要互相连接。绑定主机名称与IP地址到/etc/hosts Master/Slave # vim /etc/hosts 10.1.1.10 master.itcast.cn 10.1.1.100 slave.itcast.cn 第五步关闭防火墙与SELinux # systemctl stop firewalld # systemctl disable firewalld # systemctl list-unit-files|grep firewalld # setenforce 0 # sed -i /^SELINUX/cSELINUXdisabled /etc/selinux/config 第六步配置yum源建议使用腾讯源 配置参考以前笔记略 第七步时间同步 # ntpdate 182.92.12.11 4、MySQL主从复制核心思路 slave必须安装相同版本的mysql数据库软件 master端必须开启二进制日志slave端必须开启relay log日志 master端和slave端的server-id号不能一致 slave端配置向master来同步数据 master端必须创建一个复制用户 保证master和slave端初始数据一致 配置主从复制slave端 5、MySQL主从复制的具体实践 第一步上传MySQL软件包到Master与Slave 第二步在Master端安装、初始化以及运行mysql软件 安装需求 选项值自定义也可以采用默认形式安装路径/usr/local/mysql数据路径/usr/local/mysql/data端口号3306 ① 安装MySQL软件 # vim mysql.sh #!/bin/bash yum install libaio -y tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz rm -rf /usr/local/mysql mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql useradd -r -s /sbin/nologin mysql rm -rf /etc/my.cnf cd /usr/local/mysql mkdir mysql-files chown mysql:mysql mysql-files chmod 750 mysql-files bin/mysqld --initialize --usermysql --basedir/usr/local/mysql /root/password.txt bin/mysql_ssl_rsa_setup --datadir/usr/local/mysql/data cp support-files/mysql.server /etc/init.d/mysqld service mysqld start echo export PATH$PATH:/usr/local/mysql/bin /etc/profile source /etc/profile# source mysql.sh Shell脚本其实就是命令的堆砌把一堆Linux命令写在同一个文件中一起执行。 ② 安全配置 # mysql_secure_installation ③ 配置my.cnf重点开启二进制日志 # cd /usr/local/mysql # vim my.cnf [mysqld] basedir/usr/local/mysql datadir/usr/local/mysql/data socket/tmp/mysql.sock port3306 log-error/usr/local/mysql/data/master.err log-bin/usr/local/mysql/data/binlog 一定要开启二进制日志 server-id10 character_set_serverutf8mb4 utf8mb4相当于utf8升级版配置完成后重启mysqld服务 # service mysqld restart # chkconfig --add mysqld # chkconfig mysqld on 第三步在Slave从服务器端安装mysql软件不需要初始化 ① 安装MySQL软件 # vim mysql.sh #!/bin/bash yum install libaio -y tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz rm -rf /usr/local/mysql mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql useradd -r -s /sbin/nologin mysql rm -rf /etc/my.cnf cd /usr/local/mysql mkdir mysql-files chown mysql:mysql mysql-files chmod 750 mysql-files cp support-files/mysql.server /etc/init.d/mysqld echo export PATH$PATH:/usr/local/mysql/bin /etc/profile source /etc/profile 相对于主服务器MySQL的安装与配置从服务器端不需要进行初始化操作因为其数据将来都来自于主服务器。 ② 配置my.cnf文件 # cd /usr/local/mysql # vim my.cnf [mysqld] basedir/usr/local/mysql datadir/usr/local/mysql/data socket/tmp/mysql.sock port3310 log-error/usr/local/mysql/data/slave.err relay-log/usr/local/mysql/data/relaylog 开启中继日志 server-id100 character_set_serverutf8mb4 ③ 把master主服务器的数据目录同步到slave从服务器 a. 把MASTER服务器中的mysqld停止掉 # service mysqld stop b. 把MASTER服务器中的/usr/local/mysql/data目录下的auto.cnf文件删除 # rm -rf /usr/local/mysql/data/auto.cnf 没安装一个mysql软件其data数据目录都会产生一个auto.cnf文件里面是一个唯一性的编号相当于我们每个人的身份证号码。 c. 把MASTER服务器中/usr/local/mysql中的data目录拷贝一份到SLAVE从服务器的/usr/local/mysql目录 # rsync -av /usr/local/mysql/data root10.1.1.100:/usr/local/mysql/ d. 同步完成后把主服务器与从服务器中的mysqld启动 # service mysqld start 常见问题解决方案 ☆ 常见问题1MySQL无法启动 # service mysqld start Redirecting to /bin/systemctl start mysqld.service Failed to start mysqld.service: Unit not found. 出现以上问题的主要原因在于/etc/init.d目录中没有mysqld这个文件换句话说就是你没有cp mysql.server脚本 # cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld 记住/etc/init.d目录中的文件叫什么名字我们service的时候就应该使用什么名字 # service mysqld start ☆ 常见错误2MySQL没有安装在/usr/local/mysql目录中service也无法启动 # service mysqld start 无法启动的原因可能是你的MySQL并没有安装在/usr/local/mysql目录中因为/etc/init.d/mysqld脚本中的basedir与datadir默认指向的都是/usr/local/mysql 所以如果我们更换了mysql的安装位置则必须更改/etc/init.d/mysqld脚本中basedir与datadir目录 # vim /etc/init.d/mysqld basedir你的安装路径 datadir你的安装路径/data ☆ 常见问题3因为my.cnf配置文件导致mysql无法启动 # vim my.cnf [mysqld] basedir/usr/local/mysql 安装路径 datadir/usr/local/mysql/data 数据目录 socket/tmp/mysql.sock GLIBC默认就是/tmp/mysql.sock port3310 log-error/usr/local/mysql/slave.err 错误日志到底放在哪里 relay-log/usr/local/mysql/data/relaylog server-id100 character_set_serverutf8mb4 启动报错 Starting MySQL.2020-08-31T07:17:06.554270Z mysqld_safe error: log-error set to /usr/local/mysql/slave.err, however file dont exists. Create writable for user mysql.ERROR! The server quit without updating PID file (/usr/local/mysql/data/slave.itcast.cn.pid). 产生以上问题的主要原因在于mysql这个用户对/usr/local/mysql文件夹没有写入权限 # ll -d /usr/local/mysql drwxr-xr-x 11 7161 31415 174 Aug 31 15:16 /usr/local/mysql 发现文件拥有者位置与所属组位置都是两个数字正常应该是文件拥有者的名称与文件所属组的名称。但是由于GLIBC已经提前打包了我们解压后如果在我们系统中找不到原文件对应的文件拥有着与所属组则以两个数字代替文件拥有者与所属组的显示。 解决方案 方案一建议把错误日志丢在数据目录中 # vim my.cnf ... log-error/usr/local/mysql/data/slave.err 方案二直接更改/usr/local/mysql目录的权限 # chown -R mysql.mysql /usr/local/mysql ④ 配置MASTER-SLAVE主从同步 a. 在MASTER主服务器中创建一个账号专门用于实现数据同步 MySQL5.7及以下版本 mysql grant replication slave on *.* to slave10.1.1.% identified by 123; MySQL新版本中 mysql create user slave10.1.1.% identified by 123; mysql grant replication slave on *.* to slave10.1.1.%; mysql flush privileges; b. 在MASTER中锁表然后查看二进制文件的名称及位置 mysql flush tables with read lock; mysql show master status; ---------------------------------------------------------------------------- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | ---------------------------------------------------------------------------- | binlog.000002 | 597 | | | | ---------------------------------------------------------------------------- c. 在SLAVE从服务器中使用change master to指定主服务器并实现数据同步 mysql change master to master_host10.1.1.10,master_userslave,master_password123,master_port3306,master_log_filebinlog.000002,master_log_pos597;master_host主机的IP地址 master_user主机的user账号 master_password主机的user账号密码 master_port主机MySQL的端口号 master_log_file二进制日志文件名称 master_log_pos二进制日志文件位置 技巧主从复制的change master to语句记不住怎么办答求帮助mysql help change master to; CHANGE MASTER TO MASTER_HOSTmaster2.example.com, MASTER_USERreplication, MASTER_PASSWORDpassword, MASTER_PORT3306, MASTER_LOG_FILEmaster2-bin.001, MASTER_LOG_POS4, MASTER_CONNECT_RETRY10; d. 启动slave数据同步 mysql start slave; mysql show slave status\G 常见问题解决方案 在配置主从时一般遇到错误大部分都是change master to语句写错了80%解决方案 mysql stop slave; mysql reset slave; mysql change master to master_host10.1.1.10,master_userslave,master_password123,master_port3306,master_log_filebinlog.000002,master_log_pos597;mysql start slave; ⑤ 主MASTER服务器解锁 mysql unlock tables; Query OK, 0 rows affected (0.00 sec) 总结 主从复制必须保证两台数据库实例的server-id不一致 主服务器必须开启二进制日志从服务器必须开启中继日志 主从复制搭建必须保证初始数据一致 主服务器必须要给从服务器创建一个复制用户并授予复制权限 Master—Slave架构主写会同步到从而从写不会同步到主 6、SLAVE从服务器不小心写入数据解决方案 正常情况下 MASTER既可以读也可以写。但是SLAVE从服务器只能执行读取操作。一旦我们在SLAVE从服务器中写入数据则主从架构会失败。 SLAVE # show slave status\G 遇到以上问题如果数量较少还可以通过跳过当前语句的方式解决。但是如果从服务器写入数据过多则以上架构必须要重新搭建了 解决方案 问 如果由于人为操作或者其他原因直接将数据更改到从服务器导致数据同步失效怎么解决 答可以通过变量sql_slave_skip_counter临时跳过事务进行处理 SET GLOBAL sql_slave_skip_counter N N代表跳过N个事务 举例说明 mysql SET GLOBAL sql_slave_skip_counter1; mysql stop slave; mysql start slave; 注意 1. 跳过事务应该在slave上进行 2. 传统的AB复制方式可以使用变量sql_slave_skip_counter基于GTIDs的方式不支持 四、基于GTIDs的AB复制架构(M-S) 1、GTIDs概述 什么是GTIDs以及有什么特点 GTIDsGlobal transaction identifiers全局事务标识符是mysql 5.6新加入的一项技术 当使用GTIDs时每一个事务都可以被识别并且跟踪 添加新的slave或者当发生故障需要将master身份或者角色迁移到slave上时都无需考虑是哪一个二进制日志以及哪个position值极大简化了相关操作 GTIDs是完全基于事务的因此不支持MYISAM存储引擎 GTID由source_id和transaction_id组成 1source_id来自于server_uuid,可以在auto.cnf中看到 2transation_id是一个序列数字自动生成. 使用GTIDs的限制条件有哪些 不支持非事务引擎MyISAM因为可能会导致多个gtid分配给同一个事务 create table ... select 语句不支持主库语法报错 create/drop temporary table 语句不支持 必须使用enforce-gtid-consistency参数 sql-slave-skip-counter不支持(传统的跳过错误方式) GTID复制环境中必须要求统一开启和GTID或者关闭GTID 在mysql 5.6.7之前使用mysql_upgrade命令会出现问题 2、基于GTIDs的主从复制 在生产环境中大多数情况下使用的MySQL5.6基本上都是从5.5或者更低的版本升级而来这就意味着之前的mysql replication方案是基于传统的方式部署并且已经在运行因此接下来我们就利用已有的环境升级至基于GITDs的Replication 〇 思路 修改配置文件支持GTIDs (主从) 重启数据库 (主从) 为了保证数据一致性master和slave设置为只读模式 (主从) 从服务器上重新配置同步 从 3、基于GTIDs的主从复制实践 ① 修改配置文件支持GTIDs MASTER my.cnf # vim my.cnf ... gtid-modeon log-slave-updates1 enforce-gtid-consistency SLAVE my.cnf # rm -rf data/binlog.* # vim my.cnf ... log-bin/usr/local/mysql/data/binlog 必须要开启二进制 gtid-modeon log-slave-updates1 enforce-gtid-consistency skip-slave-start 当MASTER主服务器GTIDs没有启动时跳过SLAVE服务器的启动 说明 1开启GITDs需要在master和slave上都配置gtid-modelog-binlog-slave-updatesenforce-gtid-consistency该参数在5.6.9之前是--disable-gtid-unsafe-statement 2其次slave还需要增加skip-slave-start参数,目的是启动的时候先不要把slave起来需要做一些配置 3基于GTIDs复制从服务器必须开启二进制日志 ② 重新启动mysqld服务 # service mysqld restart ③ 主从配置只读模式 mysql set global.read_onlyON; ④ SLAVE重新配置change master to mysql stop slave; mysql reset slave; mysql change master to master_host10.1.1.10,master_userslave,master_password123,master_port3306,master_auto_position1;注意 1.确保有复制用户 2.主要区别于传统复制的参数是master_auto_position1mysql start slave; mysql show slave status\G ⑤ 关闭主从服务器的只读模式 mysql set global.read_onlyOFF; 测试验证往主服务器中写入部分数据验证一下 4、SLAVE从服务器不小心写入数据解决方案 方法一跳过事务 指定需要跳过的GTIDs编号 SET GTID_NEXTaaa-bbb-ccc-ddd:N; 开始一个空事务 BEGIN; COMMIT; 使用下一个自动生成的全局事务ID。 SET GTID_NEXTAUTOMATIC;举例说明 mysql stop slave; mysql SET SESSION.GTID_NEXT 13e36f00-eb70-11ea-91a8-000c29d1f40a:1/*!*/; mysql BEGIN; mysql commit; mysql SET SESSION.GTID_NEXT AUTOMATIC; mysql start slave; mysql show slave status\G说明需要跳过哪个事务需要手动查看relaylog文件得到 [rootslave1 data]# ../bin/mysqlbinlog relay.000003|less 。。。。 # at 756 #181015 12:04:45 server id 10 end_log_pos 817 CRC32 0x5374f49e GTID [commityes] SET SESSION.GTID_NEXT 044e6392-cf9b-11e8-a748-000c294ca304:3/*!*/; 方法二重新同步data目录重新change master to...
http://www.zqtcl.cn/news/12522/

相关文章:

  • 购物网站logowordpress引用文章
  • php企业网站开发实验总结网站设计需要在哪方面提升
  • 深圳网站建设工资知乎营销平台
  • 用dw制作个人网站广州网站建设公司乐云seo
  • 网站建设阿华seo郑州哪有做网站的公司
  • 网站的优点有哪些方面搭建网站 软件下载
  • 建设银行宁波招聘网站线下推广的好处
  • 网站开发技术的历史八冶建设集团有限公司网站
  • 建设网站英文seo自学教程
  • 有没有安全一点的网站12380网站建设建议
  • 自己做的网站怎么传到空间啊windows优化大师怎么样
  • 红色好看的网站福州注册公司快点办
  • 外贸网站建设内容包括哪些水果网站建设
  • wordpress快速建站郑州app推广
  • 微软做网站wordpress如何在地址栏中加网站logo
  • 县城房地产网站可以做吗宜兴做网站的公司有哪些
  • 淄博网站建设常见问题湖南营销型网站建设 j磐石网络
  • 支持html5的网站网络科技有限公司注册资金最低
  • 赢展网站建设如何设置自己的网站
  • 网站建设谈判wordpress怎么用地图吗
  • 烟台网站开发多少钱张家港网站建设哪家好
  • 贵阳建网站公司开发者模式有什么危害
  • 扬中网站建设要多少钱响应式网站案列
  • 桥西企业做网站企业网站建设与网页设计
  • 网站开发与没计是做什么德州哪里有学做网站的
  • 哪里有网站建设多少钱wordpress好用吗
  • pc网站转换手机网站代码如何经营电商平台
  • 网站建设底部保定风泉网络科技有限公司
  • 甘肃省住房和建设厅网站首页常州模板网站建设企业
  • 合肥专业网站建设公司哪家好江苏城乡建设厅官方网站