数据库.主从同步

MySQL数据库:

主从同步可以实现读写分离,master可以实现读写,slave实现读,有效的减轻了主库的压力

原理:master记录数据的更改操作,slave复制master的binlog日志的SQL到自己的relay-log文件里,然后执行relay-log文件里的SQL语句,以此来实现master的数据操作

构建的基本思路
1 从库要有主库的数据,来确保数据相同
2 主服务器要启用binlog日志,授权用户(用户有权限测试和访问),查看正在使用的日志(在配置配置文件时使用)
3 从服务器要设置server_id,来指定主库的信息
4 利用客户端连接主库,测试写入数据,然后连接从库,查看主库的数据是否同步到从库

实现的基本步骤
1 备份master的数据
mysqldump -uroot -p123456 -B 库名列表 > mytest.sql

2 将主库的备份还原到从库中
mysql -u root -p < mytest.sql

3 配置主服务器
a 修改配置文件
vim /etc/my.cnf
log_bin=日志名 启用binlog日志
server_id=id值 指定服务器id号(唯一性,方便区分)
binlog_format=“mixed” 指定日期格式
启动服务 mysqld
b 授权用户,使其有同步权限
grant replication slave on . to 用户名@’从库ip地址’ identified by ‘密码’;
c 查看master状态
show master status\G 记录日志文件名file和偏移量position,从库要用

4 配置从服务器
a 修改配置文件
vim /etc/my.cnf
server_id=id值 指定服务器id
启动服务mysqld
b 指定主库信息,在数据库里操作
change master to master_host=主库ip地址 master_user=主库授权用户名 master_password=主库授权密码 master_log_file=主库正在使用的日志文件(上面又记录) master_log_pos=主库偏移量(上面有记录)
启动slave进程 start slave;
c 查看slave状态 确认io和sql线程是否运行
slave_io_runing:yes
slave_sql_runing:yes
5 测试
在master上写入数据,slave上查看是否跟新,尝试在slave上更改,看slave是否可以实现写

其他的一些配置选项

适用于master服务器
binlog_do_db=name 设置master对那些库记日志
binlog_ignore_db=name 设置master对那些库不记日志

适用于slave服务器
log_slave_updates 记录允许链式复制(主主中的副主 配置文件添加此项)
relay_log=dbsvr2_relay_bin 指定中继日志文件名
replicate_do_db=mysql 仅复制指定库,其他库将被忽略,可设置多条,省略时复制所有的库
replicate_ignore_db=test 不复制哪些库,其他库将被忽略,ignore-db与do-db只选用其中的一种

扫描二维码关注公众号,回复: 2798688 查看本文章

扩展:主-从-从
主-从-从 也是 主-主-从
在第一个从库也就是第二个主库的配置文件/etc/my.cnf中添加log_slave_updates
然后还需配置 主库和从库的所有配置
第一个主库和第三个从库按各要求进行主从配置,参考上面的主从同步进行配置

猜你喜欢

转载自blog.csdn.net/liao__ran/article/details/81676927