MySQL Replication(MySQL的主从复制)
主从数据库的工作模型:工作要点:1、主服务器要开启二进制日志 2、从服务器要有一个用户账户,这个账户要有权限到主服务器上请求二进制事件,请求完后保存到本地。 3、从服务器上要有一个线程,从中继日志中不断的读事件,在本地replay。
Master/Slave
Master: write/read
Slaves: read
为什么?
冗余:promte(提升为主),异地灾备
人工
工具程序:MHA
负载均衡:转移一部分“读”请求;
支援安全的备份操作;
测试;
...
主/从架构:
异步复制:
半同步复制:
一主多从;
一从一主;
级联复制;
循环复制;
双主复制;
一从多主:
每个主服务器提供不同的数据库;
配置:
时间同步;
复制的开始位置:
从0开始;
从备份中恢复到从节点后启动的复制;
主从服务器mysqld程序版本不一致?
主服务器:
配置文件my.cnf
server_id=#
log_bin=log-bin
启动服务:
mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'USERNAME'@'HOST' IDENTIFIED BY 'YOUR_PASSWORD';
mysql> FLUSH PRIVILEGES;
从服务器:
配置文件my.cnf
server_id=#
relay_log=relay-log
启动服务:
mysql> CHANGE MASTER TO MASTER_HOST='HOST',MASTER_USER='USERNAME',MASTER_PASSWORD='YOUR_PASSWORD',MASTER_LOG_FILE='BINLOG',MASTER_LOG_POS=#;
mysql> START SLAVE [IO_THREAD|SQL_THREAD];
mysql> SHOW SLAVE STATUS;
课外作业:基于SSL的复制的实现;
配置主从数据库实例
1、加入使用centos7(2)和centos7(3)这两台虚拟机当做节点,(2)做主,(3)做从。第一步先同步时间
两台主机分别执行ntpdate 10.1.0.1
配置/etc/chrony.conf文件
时间节点已经同步
2、在节点1(centos7(2)),配置/etc/my.cnf
log-bin=master-log 启动二进制日志 server-id=1 设置id
启动mysql服务
systemctl start mariadb.service
验证二进制日志文件
主节点连入数据库,执行show master status,查看是从哪个文件,哪个位置开始。即便从0开始,待会复制时也要指明从哪个文件哪个位置开始。
3、在节点2(centos7(3)),配置从节点,vim /etc/my.cnf
启动mysql服务
systemctl start mariadb.service
查看日志文件
4、主服务器上,授权一个拥有连接复制权限的账号
然后FLUSH PRIVILEGES
主从上面只需要业务同步就可以,不需要授权同步
这时,主服务器授权已经完成,从服务器就可以连上了
查看从服务器使用与否
show slave status
这里还没有启动复制功能,启动复制功能start slave
查看,已经复制过来了
在主节点上做一些创建类的操作,创建一个mydb2数据库,通常从节点上可以查看到这个数据库
注意:复制是单向的,从服务器上创建数据库,主服务器无法显示
让从服务器只能读,不能写,设置成只读
再也不释放锁,谁也写不进来
这样的话从线程也写不了了。所有只能寄托从服务器不要误操作。
原创文章,作者:15152188070,如若转载,请注明出处:http://www.178linux.com/60261