主从复制与主主复制怎么自动切换:使用Keepalived
日常如何导出数据:mysqldump、xtrabackup
-
主库宕机解决方案(一主多从)
登陆从库>show processlist\G;
#cat /data/3306/data/master.info
#cat /data/3307/data/master.iinfo
显示POS数值最大的将升级为主库
或者利用半同步功能,直接选择做了实时同步的从库升为主库。
授权同步用户和主库一样。
1)确保所有relay log更新完毕
每个从库执行:>stop slave io_thread;show processlist;
直到看到Has reda all realy log; 表示从库更新都执行完毕
2)登陆将要升为主的从库
#mysql -uroot -p'000' -S /data/3306/mysql.sock
>stop slave;
>retset master;
>quit;
3)进入数据库目录,删除master.info relay_log.info
#cd /data/3306/data
#rm -f master.info relay-log.info
检查授权表 read-only等参数
4)提升为主库
#vim /data/3306/my.cnf
开启:log-bin = /data/3306/mysql-bin
注:存在log-slave-updates read-only等一定要注释
#/data/3306/mysql restart
5)若主库没宕机,则需要去主库拉取binlog补全从库。
6)其他从库操作
>stop slave;
>change master to master_host = '192.168.11.6' ;
>start slave;
>show slave status\G;
7)修改程序配置文件从主库35指向32
一般访问数据库用域名,则可直接修改hosts解析。
-
数据库读写慢原因
1)在程序设计时没有索引
2)I/O吞吐量小
3)内存不足
4)查询数据量过大
-
数据库同步延迟原因
1)主从库间的网络延迟;
优化:提升端口带宽;
2)从库数量较多导致复制延迟;
优化:建议从库数量3-5个为宜;
3)主从两台机器负载不一致。由于主从复制是主数据库上启动一个I/O线程,从上启动一个I/O线程和一个SQL线程,当机器负载高时,可能导致其中的任何一个线程出现资源不足;
优化:提升硬件性能;
4)慢sql语句过多;
优化:sql执行时间较长,需优化sql语句;
5)主从复制设计问题;
优化:主从复制单线程,可通过多线程IO方案解决;
6)Max_allowed_packet设置不一致。主库设置其值大于从库,当较大的sql语句能在主库上执行,从库其值过小,无法执行;
优化:数值设置保持一致;
7)版本不一致;
优化:版本保持一致;