一、理论篇
1、企业中单台MySQL问题
1)单点故障
2)服务不可用无法处理大量的高并发数据请求
3)数据丢是没有办法恢复
4)数据丢失导致前端无法正常工作
解决办法
1、增加MySQL数据库服务器,对数据进行备份,形成主备
2、确保准备的MySQL数据库服务器是一样的
3、主服务器宕机,备份服务器继续工作,数据有保证
MySQL主从复制与读写分离是密切相关的
读写分离是基于主从复制来实现的
二、主从服务器工作原理
MySQL主从复制的类型:
1)基于语句的复制
2)基于行的复制
3)混合类型的复制
工作步骤:
1、MySQL从服务器开启I/O线程,项主服务器请求数据同步(获取主服务器上的二进制日志)
2、MySQL主服务器开启I/O线程回应从服务器
3、从服务器得到主的二进制日志写入中继日志中
4、从服务器开启SQL线程将二进制日志内容执行,实现数据同步。
实验一、使用三台服务器器,一台主两台从
mysql-master192.168.11.102
MySQL-slave1192.168.11.103
mysql-slave2192.168.11.106
一、首先在主MySQL上安装时间同步工具ntp
1、yum -y install ntp
2、编辑/etc/ntp.conf配置文件
vim/etc/ntp.conf
添加下面两句
server127.127.1.0
fudge127.127.1.0 startum 8
sed -n '25,28p' /etc/ntp.conf查看
3、重启ntp服务
service ntp restart
4、在两台从MySQL上安装ntpdate工具
yum -y install ntpdate
1、在两台从服务器上输入ntpd +主MySQL的IP地址
ntpdate 192.168.11.102将自己的时间同步到主MySQL上
2、多刷新几次后发现时间差越来越小
因为时间在前行的时候会有偏差。所以时间同步命令要不时的去执行。所以就要设置一个周期性计划任务来解决
这样三台服务器的时间就是同步的了
二、安装MySQL服务
在主MySQL上配置
1、cp /usr/share/doc/mysql-server-5.1.71/my-medium.cnf
/etc/my.cnf
vim /etc/my.conf
【mysqld】中
添加log-slave-updates=true
修改server-id= 11
2、重启MySQL
如果遇到这个错误就是说明你只装了服务端而没有主客户端
3、在主上给从服务器授权
grant replication slave on *.* to
'mysqlslave'@'192.168.11.%' identified b y '123123';
flush privileges;
4、查看授权表:mysql> show
master status;
三、编辑从服务器两台配置一样,但是server-id的数字不能一样
1、修改配置文件指定从日志索引
[root@localhost ~]# vim /etc/my.conf
添加
relay-log=relay-log-bin
relay-log-index=salve-relay-bin.index
修改server-id= 12
2、重启
/etc/init.d/mysqld restart
3、登陆MySQL授权
mysql -uroot -p123123
change
master to master_host='192.168.11.102',master_user='myslave',master_password='123123'
,master_log_file='mysql-bin.000003',master_log_pos=550;
start slave;
show slave status\G;
在主MySQL上创建一个库
查看从服务器,操作是否同步。