陕西高端品牌网站建设/黄页网站推广
一、前言
要了解主从原理,我们首选要从mysql的二进制文件说起。MySQL的二进制日志(binary log)是一个二进制文件,主要用于记录修改数据或有可能引起数据变更的MySQL语句。二进制日志(binary log)中记录了对MySQL数据库执行更改的所有操作,并且记录了语句发生时间、执行时长、操作数据等其它额外信息,但是它不记录SELECT、SHOW等那些不修改数据的SQL语句。二进制日志(binary log)主要用于数据库恢复和主从复制,以及审计(audit)操作。
那么,我们只要能通过io实时传递二进制文件新增内容,就能实现数据库内容同步。在这里我们还应该满足同步的数据库具有相同初态。
总结起来,我们要做的就有三件事,第一,安装mysql环境,第二,同步数据库具有统一初态,第三、同步数据库实时传递二进制日志内容、
二、环境准备
1、两台centos服务器(可采用虚拟机,或者本地用不同端口)
2、安装相同版本的mysql软件(版本不同,可能导致未知错误)
3、常见错误请见:传送门
附:mysql安装步骤:
#获取mysql库文件
sudo yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
#安装mysql
sudo yum install mysql-community-server
#启动mysql
sudo service mysqld start
#查看初始密码
sudo grep 'temporary password' /var/log/mysqld.log
#登录mysql
mysql -uroot -p
三、同步主从数据
第一步、将主服务器要同步的数据库加锁,避免同步时发生改变:
use database_name;
flush tables with read lock;
第二步、使用mysqldump工具导出数据:
mysqldump -uroot -pxxx database_name >database_name.sql
第三步、备份完成后,解锁数据库:
unlock tables;
第四步、将初始数据导入从数据库:
create database database_name;
use database_name;
source database_name.sql;
四、配置主从数据库
1、主数据库
第一步、修改配置:vim /etc/my.cnf
log-bin=mysql-bin #开启二进制日志
server-id=1 #设置server-id
第二步、创建同步账号
#创建账号
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
#赋予同步权限
GRANT privileges ON databasename.tablename TO 'username'@'host'
第三步、查看master信息:show master status
2、从数据库
第一步、修改配置:vim /etc/my.cnf
log-bin=mysql-bin #开启二进制日志server-id= 2 #主数据库id为1,不能相同。
replicate_wild_do_table=test.% #只同步test库下的表
relay_log=mysqld-relay-bin #记录中继日志
log-slave-updates=YES #从服务器同步后记录日志
第二步、更改master
#log_file与主数据库的File一致,log_pos与主数据库的Positio一致
change master to master_host='xxxxx', master_user='sunyiran', master_password='sunyiran_baiduyun2G', master_log_file='mysql-bin.000001', master_log_pos=155;
第三步、查看slave状态