mysql主从,主主备份原理及实践

学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践html

简介:

感谢你们在上一篇 学一点Git--20分钟git快速上手 里的踊跃发言。这里再次分享干货, 简单介绍mysql双机,多机异地热备简单原理实战。mysql

双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操做都自动应用到另一个数据库,始终保持两个数据库数据一致。 这样作的好处多。 1. 能够作灾备,其中一个坏了能够切换到另外一个。 2. 能够作负载均衡,能够将请求分摊到其中任何一台上,提升网站吞吐量。  对于异地热备,尤为适合灾备。废话很少说了。咱们直接进入主题。 咱们会主要介绍两部份内容:ios

1、mysql 备份工做原理git

2、 备份实战sql

我使用的是mysql 5.5.34,shell

1、 mysql 备份工做原理

简单的说就是把 一个服务器上执行过的sql语句在别的服务器上也重复执行一遍, 这样只要两个数据库的初态是同样的,那么它们就能一直同步。数据库

固然这种复制和重复都是mysql自动实现的,咱们只须要配置便可。安全

咱们进一步详细介绍原理的细节, 这有一张图:服务器

上图中有两个服务器, 演示了从一个主服务器(master) 把数据同步到从服务器(slave)的过程。负载均衡

这是一个主-从复制的例子。 主-主互相复制只是把上面的例子反过来再作一遍。 因此咱们以这个例子介绍原理。

对于一个mysql服务器, 通常有两个线程来负责复制和被复制。当开启复制以后。

1. 做为主服务器Master,  会把本身的每一次改动都记录到 二进制日志 Binarylog 中。 (从服务器会负责来读取这个log, 而后在本身那里再执行一遍。)

2. 做为从服务器Slave, 会用master上的帐号登录到 master上, 读取master的Binarylog,  写入到本身的中继日志 Relaylog, 而后本身的sql线程会负责读取这个中继日志,并执行一遍。  到这里主服务器上的更改就同步到从服务器上了。

在mysql上能够查看当前服务器的主,从状态。 其实就是当前服务器的 Binary(做为主服务器角色)状态和位置。 以及其RelayLog(做为从服务器)的复制进度。

例如咱们在主服务器上查看主状态:

 

mysql> show master status\G
*************************** 1. row ***************************
            File: mysql-bin.000014
        Position: 107
    Binlog_Do_DB: 
Binlog_Ignore_DB: mysql,information_schema,performance_schema,amh
1 row in set (0.00 sec)

稍微解释一下这几行的意思:

1. 第一行代表 当前正在记录的 binarylog文件名是: mysql-bin.000014.

咱们能够在mysql数据目录下,找到这个文件:

 

2.  第二行, 107. 表示当前的文件偏移量, 就是写入在mysql-bin.000014 文件的记录位置。

这两点就构成了 主服务器的状态。  配置从服务器的时候,须要用到这两个值。 告诉从服务器从哪读取主服务器的数据。 (从服务器会登陆以后,找到这个日志文件,并从这个偏移量以后开始复制。)

3. 第三行,和第四行,表示须要记录的数据库和须要忽略的数据库。 只有须要记录的数据库,其变化才会被写入到mysql-bin.000014日志文件中。  后面会再次介绍这两个参数。

咱们还能够在从服务器上,查看从服务器的复制状态。

 

咱们仍是来重点解释途中的红圈的部分:

1.  Master_host 指的是 主服务器的地址。 

2. Master_user 指的是主服务器上用来复制的用户。  从服务器会用此帐号来登陆主服务。进行复制。

3. Master_log_file 就是前面提到的, 主服务器上的日志文件名.

4. Read_Master_log_pos 就是前面提到的主服务器的日志记录位置, 从服务器根据这两个条件来选择复制的文件和位置。

5. Slave_IO_Running:  指的就是从服务器上负责读取主服务器的线程工做状态。 从服务器用这个专门的线程连接到主服务器上,并把日志拷贝回来。

6. Slave_SQL_Running: 指的就是专门执行sql的线程。 它负责把复制回来的Relaylog执行到本身的数据库中。 这两个参数必须都为Yes 才代表复制在正常工做。

其余的参数以后再介绍。

2、mysql 双机热备实战

了解了上面的原理以后, 咱们来实战。 这里有两个重点, 要想同步数据库状态, 须要相同的初态,而后配置同步才有意义。 固然你能够不要初态,这是你的自由。 咱们这里从头开始配置一遍。

 

咱们先以A服务器为起点,  配置它的数据库同步到B。  这就是主-从复制了。 以后再反过来作一次,就能够互相备份了。

1, 第一步,

在A上面建立专门用于备份的 用户:

 

grant replication slave on *.* to 'repl_user'@'192.***.***.***' identified by 'hj34$%&mnkb';

上面把ip地址换成B机器的ip地址。 只容许B登陆。安全。

用户名为: repl_user

密码为: hj34$********nkb

这个等会在B上面要用。

2. 开启主服务器的 binarylog。

不少服务器是默认开启的,咱们这里检查一下:

打开 /etc/my.cnf

 

我来解释一下红框中的配置:

前面三行, 你可能已经有了。

binlog-do-db 用来表示,只把哪些数据库的改动记录到binary日志中。 能够写上关注hello数据库。 可是我把它注释掉了。 只是展现一下。 能够写多行,表示关注多个数据库。

binlog-ignore-db 表示,须要忽略哪些数据库。我这里忽略了其余的4个数据库。

后面两个用于在 双主(多主循环)互相备份。 由于每台数据库服务器均可能在同一个表中插入数据,若是表有一个自动增加的主键,那么就会在多服务器上出现主键冲突。  解决这个问题的办法就是让每一个数据库的自增主键不连续。  上图说是, 我假设须要未来可能须要10台服务器作备份, 因此auto-increment-increment 设为10.   而 auto-increment-offset=1 表示这台服务器的序号。 从1开始, 不超过auto-increment-increment。

这样作以后, 我在这台服务器上插入的第一个id就是 1, 第二行的id就是 11了, 而不是2.

(同理,在第二台服务器上插入的第一个id就是2, 第二行就是12, 这个后面再介绍) 这样就不会出现主键冲突了。 后面咱们会演示这个id的效果。

3.  获取主服务器状态, 和同步初态。

假设我如今有这些数据库在A上面。

若是你是全新安装的, 那么不须要同步初态,直接跳过这一步,到后面直接查看主服务器状态。

这里咱们假设有一个 hello 数据库做为初态。

 

先锁定 hello数据库:

FLUSH TABLES WITH READ LOCK;

 

而后导出数据:

我这里只须要导出hello数据库, 若是你有多个数据库做为初态的话, 须要导出全部这些数据库:

 

而后查看A服务器的binary日志位置:

记住这个文件名和 位置, 等会在从服务器上会用到。

 

主服务器已经作完了, 能够解除锁定了:

 

4.  设置从服务器 B 须要复制的数据库

打开从服务器 B 的 /etc/my.cnf 文件:

 

解释一下上面的内容。

server-id 必须保证每一个服务器不同。 这可能和循环同步有关。 防止进入死循环。

replicate-do-db 能够指定须要复制的数据库, 我这里注掉了。 演示一下。

replicate-ignore-db 复制时须要排除的数据库, 我使用了,这个。 除开系统的几个数据库以外,全部的数据库都复制。

relay_log 中继日志的名字。 前面说到了, 复制线程须要先把远程的变化拷贝到这个中继日志中, 在执行。

log-slave-updates 意思是,中继日志执行以后,这些变化是否须要计入本身的binarylog。 当你的B服务器须要做为另一个服务器的主服务器的时候须要打开。  就是双主互相备份,或者多主循环备份。 咱们这里须要, 因此打开。

保存, 重启mysql。

5. 导入初态, 开始同步。

把刚才从A服务器上导出的 hello.sql 导入到 B的hello数据库中, 若是B如今没有hello数据库,请先建立一个, 而后再导入:

建立数据库:

mysql> create database hello default charset utf8;

把hello.sql 上传到B上, 而后导入:

 

若是你刚才导出了多个数据库, 须要把他们都一一上传导入。

开启同步, 在B服务器上执行:

CHANGE MASTER TO 
       MASTER_HOST='192.***.***.***', 
       MASTER_USER='repl_user', 
       MASTER_PASSWORD='hj3****', 
       MASTER_LOG_FILE='mysql-bin.000004', 
       MASTER_LOG_POS=7145;

 

上面几个参数我就不解释了。 前面说过了。

重启mysql,  而后查看slave线程开启了没:

 

注意图中的红框, 两个都是Yes, 说明开启成功。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

若是其中一个是No, 那就说明不成功。须要查看mysql的错误日志。 我在第一次作的时候就遇到这个问题。有时候密码填错了, 有时候防火墙的3306没有打开。ip地址不对,等等。 都会致使失败。

咱们看错误日志: mysql的错误日志通常在:

 

文件名应该是你的机器名, 我这里叫作host1.err 你换成你本身的。

到这里主-从复制已经打开了。 咱们先来实验一下。

咱们在A的数据库里面去 添加数据:

 

我在A的 hello数据库的test表中 连续插入了3条数据,  注意看他们的自增加id, 分别是1,11,21.  知道这是为何吗。 前面已经说过了,不懂再回去看。

咱们去看一下B数据库有没有这三条数据:

打开B的数据库:

 

发现已经在这了。 这里效果不直观。

此时不要在B中修改数据。 咱们接着配置从B到A的复制。  若是你只须要主从复制的话, 到这里就结束了。后面能够不看了。 全部A中的修改都能自动同步到B, 可是对B的修改却不能同步到A。 由于是单向的。 若是须要双向同步的话,须要再作一次从B到A的复制。

基本跟上面同样:咱们简单一点介绍:

1. 在B中建立用户;

2. 打开 /etc/my.cnf , 开启B的binarylog:

 

注意红框中所新添加的部分。

3. 咱们不须要导出B的初态了,由于它刚刚才从A导过来。  直接记住它的master日志状态:

 

记住这两个数值,等会在A上面要用。

B服务器就设置完了。

4. 登陆到A 服务器。 开启中继:

 

注意框中心添加的部分, 不解释了。

5. 启动同步:

 

上面的ip地址是B的ip地址, 由于A把B当作master了。 不解释了。

而后重启mysql服务。

而后查看,slave状态是否正常:

 

图中出现了两个No。

Slave_IO_Running: No

Slave_SQL_Running: No

说明slave没有成功, 即,从B到A的同步没有成功。 咱们去查看mysql错误日志,前面说过位置:

 

找到  机器名.err 文件,打开看看:

 

看图中的error信息。  说找不到中继日志文件。

这是由于咱们在配置A的中继文件时改了中继文件名,可是mysql没有同步。解决办法很简单。

 

先停掉mysql服务。  找到这三个文件,把他们删掉。 必定要先停掉mysql服务。否则仍是不成功。你须要重启一下机器了。 或者手动kill mysqld。

好了, 启动mysql以后。 咱们在来检查一下slave状态:

 

注意图中两个大大的Yes。  哈哈。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

证实从B到A的复制也成功了。

此时咱们去B服务器中插入几条数据试试:

 

我在B中插入了两条数据。 注意看他们的id。  不解释。

而后咱们,登陆去A中看看,A数据库变了没。

 

能够看到已经自动同步到A了。

至此, AB双主互相热备就介绍完了。

原理其实很简单,是否是。

理解了这个原理, 多机循环互备就简单了。这里就再也不展开了。

花了一天时间写这个博客,你们要顶啊。

3、mysql主从复制(另外一方法,超简单)

怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤以下:

一、主从服务器分别做如下操做
  1.一、版本一致
  1.二、初始化表,并在后台启动mysql
  1.三、修改root的密码

二、修改主服务器master:
   #vi /etc/my.cnf
       [mysqld]
       log-bin=mysql-bin   //[必须]启用二进制日志
       server-id=222      //[必须]服务器惟一ID,默认是1,通常取IP最后一段

三、修改从服务器slave:
   #vi /etc/my.cnf
       [mysqld]
       log-bin=mysql-bin   //[不是必须]启用二进制日志
       server-id=226      //[必须]服务器惟一ID,默认是1,通常取IP最后一段

四、重启两台服务器的mysql
   /etc/init.d/mysql restart

五、在主服务器上创建账户并受权slave:
   #/usr/local/mysql/bin/mysql -uroot -pmttang   
   mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //通常不用root账号,“%”表示全部客户端均可能连,只要账号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,增强安全。

六、登陆主服务器的mysql,查询master的状态
   mysql>show master status;
   +------------------+----------+--------------+------------------+
   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +------------------+----------+--------------+------------------+
   | mysql-bin.000004 |      308 |              |                  |
   +------------------+----------+--------------+------------------+
   1 row in set (0.00 sec)
   注:执行完此步骤后不要再操做主服务器MYSQL,防止主服务器状态值变化

七、配置从服务器Slave:
   mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='q123456',
         master_log_file='mysql-bin.000004',master_log_pos=308;   //注意不要断开,308数字先后无单引号。

   Mysql>start slave;    //启动从服务器复制功能

八、检查从服务器复制功能状态:

   mysql> show slave status\G

   *************************** 1. row ***************************

              Slave_IO_State: Waiting for master to send event
              Master_Host: 192.168.2.222  //主服务器地址
              Master_User: mysync   //受权账户名,尽可能避免使用root
              Master_Port: 3306    //数据库端口,部分版本没有此行
              Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 600     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
              Relay_Log_File: ddte-relay-bin.000003
              Relay_Log_Pos: 251
              Relay_Master_Log_File: mysql-bin.000004
              Slave_IO_Running: Yes    //此状态必须YES
              Slave_SQL_Running: Yes     //此状态必须YES
                    ......

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,不然都是错误的状态(如:其中一个NO均属错误)。

以上操做过程,主从服务器配置完成。
  
九、主从服务器测试:

主服务器Mysql,创建数据库,并在这个库中建表插入一条数据:

  mysql> create database hi_db;
  Query OK, 1 row affected (0.00 sec)

  mysql> use hi_db;
  Database changed

  mysql>  create table hi_tb(id int(3),name char(10));
  Query OK, 0 rows affected (0.00 sec)
 
  mysql> insert into hi_tb values(001,'bobu');
  Query OK, 1 row affected (0.00 sec)

  mysql> show databases;
   +--------------------+
   | Database           |
   +--------------------+
   | information_schema |
   | hi_db                |
   | mysql                |
   | test                 |
   +--------------------+
   4 rows in set (0.00 sec)

从服务器Mysql查询:

   mysql> show databases;

   +--------------------+
   | Database               |
   +--------------------+
   | information_schema |
   | hi_db                 |       //I'M here,你们看到了吧
   | mysql                 |
   | test          |

   +--------------------+
   4 rows in set (0.00 sec)

   mysql> use hi_db
   Database changed
   mysql> select * from hi_tb;           //查看主服务器上新增的具体数据
   +------+------+
   | id   | name |
   +------+------+
   |    1 | bobu |
   +------+------+
   1 row in set (0.00 sec)

十、完成:

    编写一shell脚本,用nagios监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就代表主从有问题了,发短信警报吧。

操做后记得执行:

mysql>flush privileges;  保存

操做:

show master status; //主库状态

stop slave;    //启动从服务器复制功能

reset slave;

change master to master_host='xxx.xxx.xx.xx',

master_user='repl_user',

master_password='123456',

master_log_file='master-bin.000001',

master_log_pos=1044;

start slave;    //启动从服务器复制功能

flush privileges;  保存

show slave status\G //查看Slave_IO_Running和Slave_SQL_Running为yes

出现问题时,删除

/var/lib/mysql

rm -rf mysql-relay-bin*  slave-bin*  relay-log* master.info

show master status; //主库状态

stop slave;    //启动从服务器复制功能

reset slave;

change master to master_host='192.168.11.1',

master_user='repl_user',

master_password='123456',

master_log_file='master-bin.000001',

master_log_pos=1044;

start slave;    //启动从服务器复制功能

flush privileges;  保存

show slave status\G; //查看Slave_IO_Running和Slave_SQL_Running为yes

出现问题时,删除

/var/lib/mysql

rm -rf mysql-relay-bin*  slave-bin*  relay-log* master.info

 

备注:

4、单实例(配置)

======================单实例===================================

1.单实例(主库my.cnf)

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]
log-bin=master-bin
log-bin-index=master-bin.index
server-id=1

read-only=0
#binlog-do-db=hello
binlog-ignore-db=mysql
binlog-ignore-db=infomation_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=test
auto-increment-increment = 1
auto-increment-offset = 1

expire_logs_day=7

log-bin-trust-function-creators=1

innodb_buffer_pool_size = 6G
max_connections=3000
innodb_flush_log_at_trx_commit=2
thread_cache_size=512
innodb_log_file_size=536870912
innodb_log_buffer_size=67108864
basedir =/usr/local/mysql
binlog_format=MIXED

#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 

2.单实例从库(my.cnf)

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]
server-id=2
log-bin=slave-bin
log-bin-index=slave-bin.index
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

expire_logs_day=7

#replicate-do-db = hello
replicate-ignore-db = mysql
replicate-ignore-db = infomation_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = test
relay_log=mysql-relay-bin
log-slave-updates = ON

log-bin-trust-function-creators=1

innodb_buffer_pool_size = 6G
max_connections=3000
innodb_flush_log_at_trx_commit=2
thread_cache_size=512
innodb_log_file_size=536870912
innodb_log_buffer_size=67108864
basedir =/usr/local/mysql
binlog_format=MIXED

#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqld_safe]
log-error=/var/log/mysqld.log
"/etc/my.cnf" 48L, 1422C

5、双实例(配置)

=========================双实例==================================

1.双实例(主库myAndroid.cnf)

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]
log-bin=/var/lib/mysql-Android/master-bin
log-bin-index=/var/lib/mysql-Android/master-bin.index
server-id=1

read-only=0
#binlog-do-db=hello
binlog-ignore-db=mysql
binlog-ignore-db=infomation_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=test
auto-increment-increment = 1
auto-increment-offset = 1

expire_logs_day=7

log-bin-trust-function-creators=1

innodb_buffer_pool_size = 6G
max_connections=3000
innodb_flush_log_at_trx_commit=2
thread_cache_size=512
innodb_log_file_size=536870912
innodb_log_buffer_size=67108864
basedir =/usr/local/mysql

#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

port = 3456
datadir=/var/lib/mysql-Android
socket=/var/lib/mysql-Android/mysql.sock
pid-file = /var/lib/mysql-Android/mysql.pid  

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqld_safe]
log-error=/var/log/mysql-Android.log
pid-file=/var/run/mysqld/mysql-Android.pid


2.双实例(主库myIOS.cnf)

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]
log-bin=/var/lib/mysql-IOS/master-bin
log-bin-index=/var/lib/mysql-IOS/master-bin.index
server-id=1

read-only=0
#binlog-do-db=hello
binlog-ignore-db=mysql
binlog-ignore-db=infomation_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=test
auto-increment-increment = 1
auto-increment-offset = 1

expire_logs_day=7

log-bin-trust-function-creators=1

innodb_buffer_pool_size = 6G
max_connections=3000
innodb_flush_log_at_trx_commit=2
thread_cache_size=512
innodb_log_file_size=536870912
innodb_log_buffer_size=67108864
basedir =/usr/local/mysql

#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

port = 8061
datadir=/var/lib/mysql-IOS
socket=/var/lib/mysql-IOS/mysql.sock
pid-file = /var/lib/mysql-IOS/mysql.pid  

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqld_safe]
log-error=/var/log/mysql-IOS.log
pid-file=/var/run/mysqld/mysql-IOS.pid
 

3.双实例从库(myAndroid.cnf)

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]
server-id=2
log-bin=/var/lib/mysql-Android/slave-bin
log-bin-index=/var/lib/mysql-Android/slave-bin.index
relay-log-index=/var/lib/mysql-Android/slave-relay-bin.index
relay-log=/var/lib/mysql-Android/slave-relay-bin

expire_logs_day=7

#replicate-do-db = hello
replicate-ignore-db = mysql
replicate-ignore-db = infomation_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = test
relay_log=mysql-relay-bin
log-slave-updates = ON

log-bin-trust-function-creators=1

innodb_buffer_pool_size = 6G
max_connections=3000
innodb_flush_log_at_trx_commit=2
thread_cache_size=512
innodb_log_file_size=536870912
innodb_log_buffer_size=67108864
basedir =/usr/local/mysql

#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

port = 3456
datadir=/var/lib/mysql-Android
socket=/var/lib/mysql-Android/mysql.sock
pid-file = /var/lib/mysql-Android/mysql.pid 

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqld_safe]
log-error=/var/log/mysql-Android.log
pid-file=/var/run/mysqld/mysql-Android.pid

4.双实例(从库myIOS.cnf)

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]
server-id=2
log-bin=/var/lib/mysql-IOS/slave-bin
log-bin-index=/var/lib/mysql-IOS/slave-bin.index
relay-log-index=/var/lib/mysql-IOS/slave-relay-bin.index
relay-log=/var/lib/mysql-IOS/slave-relay-bin

expire_logs_day=7

#replicate-do-db = hello
replicate-ignore-db = mysql
replicate-ignore-db = infomation_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = test
relay_log=mysql-relay-bin
log-slave-updates = ON

log-bin-trust-function-creators=1

innodb_buffer_pool_size = 6G
max_connections=3000
innodb_flush_log_at_trx_commit=2
thread_cache_size=512
innodb_log_file_size=536870912
innodb_log_buffer_size=67108864
basedir =/usr/local/mysql

#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

port = 8061
datadir=/var/lib/mysql-IOS
socket=/var/lib/mysql-IOS/mysql.sock
pid-file = /var/lib/mysql-IOS/mysql.pid  

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqld_safe] log-error=/var/log/mysql-IOS.log pid-file=/var/run/mysqld/mysql-IOS.pid

相关文章
相关标签/搜索