1. MySQL主从原理以及应用场景MySQL的Replication原理非常简单,总结一下:
每个从仅可以设置一个主。
主在执行sql之后,记录二进制log文件(bin-log)。
从连接主,并从主获取binlog,存于本地relay-log,并从上次记住的位置起执行sql,一旦遇到错误则停止同步。
从这几条Replication原理来看,可以有这些推论:
主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。
如果主从的网络断开,从会在网络正常后,批量同步。
如果对从进行修改数据,那么很可能从在执行主的bin-log时出现错误而停止同步,这个是很危险的操作。所以一般情况下,非常小心的修改从上的数据。
一个衍生的配置是双主,互为主从配置,只要双方的修改不冲突,可以工作良好。
如果需要多主的话,可以用环形配置,这样任意一个节点的修改都可以同步到所有节点。

可以应用在读写分离的场景中,用以降低单台MySQL服务器的I/O 
可以实现MySQL服务的HA集群
可以是1主多从,也可以是相互主从(主主)

2. 安装、配置MySQL
参考之前步骤搭建MySQL服务
为了做实验方便,我们在同一台机器上配置两个MySQL服务(跑两个端口)
cd /usr/local/; cp -r mysql mysql_slave; cd mysql_slave; 
初始化mysql2: ./scripts/mysql_install_db --user=mysql_slave --datadir=/data/mysql_slave
拷贝配置文件:cp /etc/my.cnf ./my.cnf 
修改配置文件相关参数:vim my.cnf  #更改port , socket , datadir=/data/mysql_slave
启动:/usr/local/mysql_slave/bin/mysqld_safe --defaults-file=/usr/local/mysql_2/my.cnf --user=mysql &

cp /etc/init.d/mysqld /etc/init.d/mysqld_slave vim !$ 指定my.cnf:conf=$basedir/my.cnf
若开机启动它,需加入到 /etc/rc.local中

3. 配置主从准备工作
设定mysql_2 为主端口3307,mysql为从端口为3306
在主上创建测试库: create database db1; 
然后导出主的mysql库数据然后导入给db1
mysqldump -uroot -S /tmp/mysql2.sock mysql > 123.sql ;
mysql -uroot -S /tmp/mysql2.sock db1 < 123.sql

4. 配置主(master)
vim /usr/local/mysql_2/my.cnf   #修改或添加:
server-id=1
log-bin=mysql-bin  
两个可选参数(2选1):
binlog-do-db=db1,db2 #需要同步的库
binlog-ignore-db=db1,db2 #忽略不同步的库
修改配置文件后,重启mysql_2
pid=`ps uax |grep mysql2.sock |grep -v grep |awk '{print $2}'` ; kill $pid; cd /usr/local/mysql_2/bin/; ./mysqld_safe --defaults-file=../my.cnf --user=mysql & 
设置root密码:mysqladmin -u root -S /tmp/mysql2.sock password '123456' 
mysql -u root -S /tmp/mysql2.sock -p'123456' 
grant replication slave on *.* to 'repl'@'127.0.0.1' identified by '123123'; 
flush tables with read lock; 
show master status; #一定要记住前两列的内容,一会会用到

5. 设置从(slave)
vim /etc/my.cnf  #修改或增加
server-id = 2 #这个数值不能和主一样
可选参数:replicate-do-db=db1,db2 和 replicate-ignore-db=db1,db2 #意义同主的那两个可选参数
service mysqld restart 
拷贝主的db1库数据到从:mysqldump -uroot -S /tmp/mysql2.sock -p123456 db1 > db1.sql; mysql -uroot -p -e "create database db1"; mysql -uroot -p  db1 < db1.sql
mysql -uroot -p  #登陆从的mysql
slave stop; 
change master to master_host='127.0.0.1', master_port=3307, master_user='repl', master_password='123123', master_log_file='mysql-bin.000006', master_log_pos=474952; 
slave start;
主上: mysql -uroot -S /tmp/mysql2.sock -p123456 -e "unlock tables" 
从上查看从的状态: show slave status\G;

6. 测试主从
主上清空db1库的db表 :use db1; select count(*) from db"; truncate table db;  
进入slave,查看db1库db表: use db1; select count(*) from db";  
主上删除表db: drop table db;
从上看db表不存在了
建议: MySQL主从机制比较脆弱,谨慎操作。如果重启master,务必要先把slave停掉,也就是说需要在slave上去执行 slave stop 命令,然后再去重启master的mysql服务,否则很有可能就会中断了。当然重启完后,还需要把slave给开启 slave start.

不同主机:

mysql服务器的主从配置,这样可以实现读写分离,也可以在主库挂掉后从备用库中恢复

需要两台机器,安装mysql,两台机器要在相通的局域网内

主机A: 192.168.1.100

从机B:192.168.1.101

可以有多台从机

1、先登录主机 A

mysql>GRANT REPLICATION SLAVE ON *.* TO ‘backup’@’192.168.1.101‘ IDENTIFIED BY ‘123456’;

赋予从机权限,有多台丛机,就执行多次

2、 打开主机A的my.cnf,输入

server-id               = 1    #主机标示,整数
log_bin                 = /var/log/mysql/mysql-bin.log   #确保此文件可写
read-only              =0  #主机,读写都可以
binlog-do-db         =test   #需要备份数据,多个写多行
binlog-ignore-db    =mysql #不需要备份的数据库,多个写多行

3、打开从机B的my.cnf,输入

server-id               = 2
log_bin                 = /var/log/mysql/mysql-bin.log
master-host     =192.168.1.100
master-user     =backup
master-pass     =123456
master-port     =3306
master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
replicate-do-db =test #只复制某个库
replicate-ignore-db=mysql #不复制某个库

4、同步数据库

不用太费事,只把主从库都启动即可自动同步,如果不嫌麻烦的话可以把主库的内容导出成SQL,然后在从库中运行一遍

5、先重启主机A的mysql,再重启从机B的mysql

6、验证

在主机A中,mysql>show master status\G;

在从机B中,mysql>show slave status\G;

能看到大致这些内容

File: mysql-bin.000001
Position: 1374
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql

可以在主机A中,做一些INSERT, UPDATE, DELETE 操作,看看主机B中,是否已经被修改

转载于:https://www.cnblogs.com/Nyan-Workflow-FC/p/5740209.html

Linux-MySQL主从配置相关推荐

  1. MySql(18)——Linux MySQL主从配置

    MySQL 主从配置 Author:xushuyi 参照技术:http://www.cnblogs.com/kevingrace/p/6256603.html 1. 主从数据库 1.主库:192.16 ...

  2. linux mysql主从配置_Linux下Mysql主从同步配置

    实现MySQL主从复制配置 准备两台有MySQL的服务器 1 主master:192.168.0.55 2 从slave : 192.168.0.56 01 THE FIRST 主库授权给从数据库服务 ...

  3. linux mysql主从配置_linux下mysql主从配置

    还可以参考:https://www.cnblogs.com/Halifa/archive/2016/08/23/5799566.html 一.主服务器相关配置 1.创建同步账户并指定服务器地址 [ro ...

  4. linux mysql主从配置

    1准备两台服务器 一台是192.168.118.128 一台是192.168.118.129 2主服务器配置 192.168.118.128 修改my.cnf文件 server-id=1 log-bi ...

  5. linux下安装mysql和mysql主从配置

    参考: http://blog.csdn.net/geek87/article/details/10090637 http://www.cnblogs.com/wanghetao/p/3806888. ...

  6. linux mysql 主从数据库_linux mysql数据库的主从配置

    一.原理 mysql主从配置的流程大体如图: 1)master会将变动记录到二进制日志里面: 2)master有一个I/O线程将二进制日志发送到slave; 3) slave有一个I/O线程把mast ...

  7. Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  8. mysql主从配置 简书_Mysql主从配置,实现读写分离-Go语言中文社区

    转载:https://www.cnblogs.com/alvin_xp/p/4162249.html 大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层 ...

  9. mysql主从配置访问_Mysql主从配置,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  10. mysql主从配置实现_MySQL主从配置实现

    //MySQL主从配置 首先,两边都要安装MySQL,启动两边的MySQL 接着,配置主从,要保证主从数据都一样的 可以用rsync弄过去 在主上配置/etc/my.cnf server-id=1 l ...

最新文章

  1. Win2008 R2 RemoteApp深度体验之四,RemoteApp程序测试
  2. 漫谈递归:从斐波那契开始了解尾递归
  3. 《sqlite权威指南》读书笔记 (一)
  4. Stata 17 for Win 最新中文附详细安装教程
  5. C# 词典数据结构设计【附demo】
  6. 4 拼接_3个孩子,64㎡小户型内“镶嵌”4室一厅,餐桌还能随意拼接
  7. 计算机考试用户注册,全国计算机等级考试报名系统账号注册和登录
  8. ssh框架超详细总结
  9. 电脑硬盘怎么分区?C盘/D盘/E盘......快来创建自己的DIY磁盘吧!
  10. 搜索不包含关键词_搜索:百度这样用 少入很多坑
  11. python setup.py install与python setup.py develop的区别
  12. 计算机组装维护教学工作总结,计算机组装与维护教师工作总结_2
  13. koa - 洋葱模型浅析
  14. 手机app应用免费监控软件U-APM保姆级教学,入门使用
  15. PhotoShop下载选择路径
  16. 一个毕业6年的程序员工作经历和成长感悟
  17. 基建互联 | 安霸与飞桨深度合作,高性能算法落地简单高效!
  18. 大数据框架图谱(总览)
  19. linux和windows关闭端口号的命令
  20. VS2010编译错误集合

热门文章

  1. redistemplate给hash存储设置有效期_客户端较为常用的存储机制
  2. ctp怎么设置java的编码为GBK_GitHub - yuelong2456/java-ctp: java包装的上期ctp,用swig技术实现。...
  3. 世界之窗如何保存html,世界之窗(文字版)
  4. c语言链表成绩管理系统排序,【C项目】 文件,结构体,链表,排序, 学生信息管理系统...
  5. python控制窗口_Python : Turtle窗口控制
  6. html5在别的电脑上打不开,U盘在别台电脑上打不开的原因分析及解决
  7. 解决远程主机不能cv问题
  8. @PropertiesSource注解读取配置文件中的数据
  9. 利用Python进行数据分析--时间序列
  10. terminal显示mysql_mac如何在terminal终端中操作mysql