| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> mysql高可用集群MHA -> 正文阅读 |
|
[系统运维]mysql高可用集群MHA |
MHA+MYSQL主从同步结构 MHA由日本dena公司youshimaton开发 是一套优秀的实现mysql高可用的解决方案 数据库的自动故障切换操作能做到在0-30秒内完成 MHA能确保在故障切换过程中最大限度保证数据的一致性, 以达到真正意义的高可用。 perl 编写 MHA组成: MHA manager 管理节点 管理所有数据库的服务器 可以单独部署在一台独立的机器上 也可以部署在某台数据库服务器上 MHA Node 数据节点 存储数据的mysql服务器 运行在每台mysql服务器上 由manager定时探测集群中的master节点 当master故障时,manager自动将拥有最新数据的slave提升为新的master 实例: 客户端1台? 管理机1台? 数据库服务器3台一主两从 数据库:show? master? status;? ?show? slave? status;? 查看日志是否打开,是否是从服务器 重启mysqld 配置数据库之间可以互相无密码连接 ssh-keygen?? ssh-copy-id? ?root@ip 管理机无密码连接数据库群 ssh-keygen ssh-copy-id? root@ip 配置mysql一主多从 51主数据服务器 开启日志? ?/etc/my.cnf log_bin=master51 server_id=51 :wq 登录授权从服务器用户: grant? ? replication slave ?on? *.* to?repluster@"密码"? identified? by "密码”; 52从数据服务器 ·/etc/my.cnf server_id=52 :wq???????? systemctl? restart? mysqld 登录指定主数据服务信息 show? master? status;看主数据服务器的日志指定日志文件和位置偏移量 change? master? to master_host="主ip"? ,master_user="repluster",master_password="密码“, master_log_file="master51.0001",master_log_pos=22; start slave; show? slave? status \G; 53主机和52主机一样 show? master? status; show grants? for? repluster@"%"; show? slave? ?status? \G; 57管理主机: 安装软件包 创建并编辑主配置文件 创建故障切换脚本并编辑 把vip地址指定给在当前的主服务器51 yum? ?-y install? ? perl* rpm -ivh? mha4.mysql-node-0.56-0.e16.noarch.rpm yum? -y install? ?mha4.mysql-node-0.56-0.e16.noarch.rpm tar? ? -zxvf? mha4.mysql-manager-0.56.tar.gz perl? ? Makefile.pl? ? //需要yum list? | grep -i? "? " 依赖包 make make install 安装完成命令 masterha_check_ssh? ?检查mha的ssh配置状况 masterha_check_repl? ? ? 检查mysql复制状况 masterha_manager? ? ? ? ? 启动mha masterha_check_status? ? ?检测mha运行状态 masterha_stop? ? ? ? ? ? ? ? ? 停止mha 模板文件: mkdir? ?/etc/mha cp? ?/var/ftp/upload/mha/mha4mysql-manager-0.56/samples/conf/app1.cnf??/etc/mha vim /etc/mha/app1.cnf manager_workdir=/etc/mha?? manager_log=/etc/mha/manager.log master_ip_failover_script=/etc/mha/master_ip_failover? ? 故障切换脚本,需拷贝模板 ssh_user=root ssh_port=22 repl_user=用户名(主服务授予的从连接的用户名) repl_password=密码 user=root? ? ? 数据服务器授权用户登录监视 password=密码 [server1] hostname=数据服务器ip地址 port=3306 candidate_master=1 [server2] .... :wq cp? ?/var/.../samples/scripts/master_ip_failover?? /etc/mha/ vim /etc/mha/master_ip_failover? ? ? ? ?在35行my后 my? $vip="192.168.4.100";? 定义vip地址 my? $key="1";? ?定义地址编号 my? $ssh_start_vip="/sbin/ifconfig eth0:$key $vip"; 绑定vip my? $ssh_stop_vip="/sbin/ifconfig eth0:$key? down"; 释放vip ? :wq chmod +x? /etc/mha/master_ip_failover 51主服务器数据库 ifconfig? ?eth0:1? 192.168.4.100/24 ifconfig? ?eth0:1 配置数据库服务器 51? 52? 53安装软件 创建授权用户 优化数据库 cd? ? ? ? ?? ??? mha-soft-student 都配yum? ? ?-y? ? install? ? ?./mha4mysql-node-0.56-noarch.rpm? ?节点 主配会同步给从:grant? ? all? on? *.*? ?to? root@"%"? identified? by "密码"; select? ?user,host? ?from? mysql.usrer; 多从服务器都要配置授权同步的用户: grant? ?replication? ?slave? on *.*? ?to repluser@"%"? identified by “密码”; 优化配置: 开通半同步复制: 数据都配以下:vim /etc/my.cnf? 在[mysql]下 plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so rpl_semi_sync_master_enabled=1 rpl_semi_sync_slave_enabled=1? ? ? //启用模块 relay_log_purge=0? //禁止自动删除日志文件 :wq systemctl? restart? ?mysqld 开启从服务器bin-log日志 vim? /etc/my.cnf log_bin=master52|53 :wq 测试mha57管理主机: masterha_check_ssh? ?--conf=/etc/mha/app1.cnf? ? 检查ssh masterha_check_repl? --conf=/etc/mha/app1.cnf? ?检查从服务复制主从正常 masterha_manager? --conf=/etc/mha/app1.cnf? ?--remove_dead_master_conf? ?--ignore_last_failover(无8小时内第二次限制切换) masterha_check_status? ?--conf=/etc/mha/app1.cnf masterha_stop? --conf=/etc/mha/app1.cnf 主数据会同步:grant? ?select,insert? on gamedb.*? to ya@"%"? identified? by "密码“; create database? gamedb; create? ?table? gamedb.t1(id int); 客户端:mysql? -hvip? ? -uya? -p密码? ?-e? "mysql命令" 51主数据停止mysqld服务 客户端:mysql? -hvip? ? -uya? -p密码? ?-e? "mysql命令" 52:show? slave? status; 53:show? slave status \G | grep? -i? "master_host" 57:masterha_manager? --conf=/etc/mha/app1.cnf? ?--remove_dead_master_conf --ignore_last_failover masterha_check_status? --conf=/etc/mha/app1.cnf 如何恢复宕机的数据库服务器启动mysql宕机服务 show? slave? status; 当前主服务器数据完全备份: mysqldump? ?-uroot? -p密码? --master-data(记录日志和偏移量)? gamedb > /root/gamedb.sql scp? ?/root/gamedb.sql? ? 宕机ip:/root/ 宕机:mysql? -uroot? ?-p密码? ?gamedb? <? /root/gamedb.sql grep? master? ?/root/gamedb.sql? ?日志和偏移量 宕机做从指定复制主服务器: change? master? to master_host="192.168.4.52",master_user="repluser" ,master_password="密码",master_log_file=master.22, master_log_pos=903; start? slave; 管理主机:vim? /mha/app1.cnf? 添加宕机的数据库信息加入选举 [server1] candidate_master=1 hostname=192.168.4.51 port=3305 :wq masterha_check_repl? ?--conf=/etc/mha/app1.cnf 检查主从同步 masterha_stop --conf=/etc/mha/app1.cnf masterha_manager --conf=/etc/mha/app1.cnf? --remove_dead_master_conf --ignore_last_failover select? ?* from? gamedb.t1; |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 22:38:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |