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