Linux下MySQL数据库的主从同步配置的好处是可以把这个方式当做是一个备份的方法,用来实现读写分离,缓解一个数据库的压力。让运行海量数据的时候无论是从速度还是效率上都大大提高,Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。这个就是MySQL主从备份原理。下面我们来看下具体同步配置的流程。

我们先来看下小编测试的环境:

CentOS 6.5 MySQL主从同步,MySQL版本5.6.25

主服务器:centos6.5 IP:192.168.1.101

从服务器:centos6.5 IP:192.168.1.102

一、主服务器相关配置

1、创建同步账户并指定服务器地址

[root@localhost ~]mysql -uroot -pmysql>use mysqlmysql>grant replication slave on *.* to 'testuser'@'192.168.1.102' identified by '12345678';mysql>flush privileges #刷新权限

2、修改/etc/my.cnf配置文件vi /etc/my.cnf

[mysqld]下添加以下参数,若文件中已经存在,则不用添加

server-id=1 log-bin=mysql-bin #启动MySQL二进制日志系统,binlog-do-db=ourneeddb #需要同步的数据库binlog-ignore-db=mysql #不同步mysql系统数据库,若还有其它不想同步的,继续添加[root@localhost ~]/etc/init.d/mysqld restart #重启服务
mysql> show master status;+------------------+----------+--------------+------------------+| File      | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000012 |   120 | ourneeddb| mysql      |+------------------+----------+--------------+------------------+

导出数据库之前先锁定数据库

flush tables with read lock; #数据库只读锁定命令,防止导出数据库的时候有数据写入

unlock tables; #解除锁定

导出数据库结构及数据:mysqldump -uroot -p ourneeddb > /home/ourneeddb.sql

导出存储过程及函数 :mysqldump -uroot -p -ntd -R ourneeddb > ourneeddb_func.sql

tips:-ntd导出存储过程、-R导出函数

二、从服务器相关配置

1、修改/etc/my.cnf配置文件vi /etc/my.cnf

[mysqld]下添加以下参数,若文件中已经存在,则不用添加

server-id=2 #设置从服务器id,必须于主服务器不同

log-bin=mysql-bin #启动MySQ二进制日志系统

replicate-do-db=ourneeddb #需要同步的数据库名

replicate-ignore-db=mysql #不同步mysql系统数据库

[root@localhost~ ]/etc/init.d/mysqld restart #重启服务

2、导入数据库

导入过程这里不做阐述

3、配置主从同步

[root@localhost~ ]mysql -uroot -pmysql>use mysql mysql>stop slave;mysql>change master to   master_host='192.168.1.101',   master_user='testuser',   master_password='12345678',   master_log_file='mysql-bin.000012',   master_log_pos=120; #log_file与log_pos是主服务器master状态下的File与Positionmysql>start slave;mysql>show slave status\G;*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.101Master_User: testuserMaster_Port: 3306Connect_Retry: 60Master_Log_File: mysql-bin.000012Read_Master_Log_Pos: 120Relay_Log_File: orange-2-relay-bin.000003Relay_Log_Pos: 283Relay_Master_Log_File: mysql-bin.000012Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: orangeReplicate_Ignore_DB: mysql,test,information_schema,performance_schemaReplicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 120Relay_Log_Space: 1320Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id: 1Master_UUID: 773d2987-6821-11e6-b9e0-00163f0004f9Master_Info_File: /home/mysql/master.infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update itMaster_Retry_Count: 86400Master_Bind:Last_IO_Error_Timestamp:Last_SQL_Error_Timestamp:Master_SSL_Crl:Master_SSL_Crlpath:Retrieved_Gtid_Set:Executed_Gtid_Set:Auto_Position: 0

如果都是正确的,则说明配置成功!

更多相关文章

  1. Android系统配置数据库注释(settings.db)
  2. Android(安卓)中数据库查询方法 query() 中的 select
  3. [置顶] android orm映射框架(类似hibernate)基本使用
  4. Android:getWritableDatabase/getReadableDatabase无法调用onCre
  5. Android(安卓)SQLiteDatabase的使用
  6. android SQLite数据库基本操作示例
  7. android之sqlite数据库初级
  8. Android(安卓)原生SQLite数据库操作实战
  9. Android中LiveData+Room+Paging简单实现步骤

随机推荐

  1. 使用asp.net mvc使用JsonResult返回Json
  2. 解析ADO.NET对SQL Server数据库执行增删
  3. 验证码类在asp.net mvc中的使用
  4. 在asp.net中使用JQuery Ajax相关用法总结
  5. 分析.NET的异常处理
  6. 介绍ASP.NET中的MVC如何从控制器传递数据
  7. 如何使用asp.net实现文件和文件夹的复制
  8. 详解ASP.NET中连接数据库配置方法
  9. asp.net利用ashx实现验证码功能详解
  10. 在ASP.NET中实现DES加密与解密MD5加密功