数据库主从同步操作

一:
主数据库服务器: 172.30.157.183 ; master
从数据库服务器: 172.30.157.188 ; slave
主从服务器系统版本和版本位数一致
MySQL 版本一致。

二、设置主服务器: master

1: 配置

进入:  #  vim /ect/my.cnf :

【mysqld】
log_bin = mysql-bin  
server-id = 1  
user = mysql  

#主从复制配置    
innodb_flush_log_at_trx_commit=1    
sync_binlog=1    
#需要备份的数据库    
binlog-do-db=test    
#不需要备份的数据库    
binlog-ignore-db=mysql   
#不需要备份的数据库  
binlog-ignore-db=information_schema  
#不需要备份的数据库  
binlog-ignore-db=performance_schema  

# These are commonly set, remove the # and set as required.  
basedir = /usr/local/mysql  
datadir = /db/mysql/data  
#port =3306  
#server_id = 120.76.112.207  
#socket =   

# 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   

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  
log_error = /var/log/mysql/error.log   
#pid_file = /var/lib/mysql/mysql.pid  
#开启查询缓存  
#explicit_defaults_for_timestamp=true  
symbolic-links=0    
#innodb_force_recovery=1   

配置完文件信息之后,重启mysqld服务 :
# service mysqld restart。

2. 锁定,并 备份现有的主数据库:

这个操作的原因是: 当主从数据库完成“同步链接” 之后,从服务器只能同步 “同步链接”之后的操作,“同
步链接”之前的操作并不能被从服务器给备份出来,所以,你若想将主服务器的所有数据都备份到从服务器上,
那么就需要先备份主服务器的数据;

方法: 利用mysqldump命令备份主服务器的某一数据库
  #  mysqldump -uroot --quick --flush-logs --master-data=1 -p myproject > myproject.sql

附注:--master-data的用法为:通过此参数来备份SQL文件时会建议一个slavereplication,当其值为
1时,SQL文件中会记录change master语句;当其值为2时,change master会被写成SQL注释,--
master-data在没有使用--single-transaction选项的情况下会自动使用lock-all-tables选项(即这
二代选项不要搭配使用)。如何查找SQL中的的LOG_FILE及LOG_POS呢?我们可以用如下命令(请注意
change单词要写成大写的),

在myproject.sql 文件所在目录下:用grep “CHANGE”myproject.sql来查看LOG_FILE和LOG_POS

3. 创建同步用户:

1. mysql> create user 'repl'@'172.30.157.183' identified by '123456';        
2. mysql> grant replication slave on *.* to 'repl'@'172.30.157.183' identified
 by '123456';

4. 查看master的状态

mysql> show master status;

三:设置从服务器:slave

1. 配置:记得配置完之后重启mysqld

【mysqld】
user=mysql  
basedir = /usr/local/mysql  
datadir = /db/mysql/data  
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES   
log_error = /var/log/mysql/error.log  
log_bin = mysql-bin  
server-id = 2    : 一定不能和主服务器的一致

2. 导入主数据库备份的数据库数据:

1. 首先需要你把主数据的myproject.sql文件传递给从服务器,
2. 命令: mysqladmin  和 mysql 命令
   #  mysqladmin -uroot  create myproject -p  : 给从服务器上的数据库创建 myproject库名
   #   mysql -uroot myproject

3. 进入mysql:执行

 mysql> change master to master_host='172.30.157.183',   
              master_user='repl',
              master_password='123456',
              master_port=3306,
              master_log_file='mysql-bin.000003', 
              master_log_pos=2005,
              master_connect_retry=10;

标颜色的都是你需要注意更改的:
master_host:主服务器的IP。
master_user:配置主服务器时建立的用户名
master_password:用户密码
master_port:主服务器mysql端口,如果未曾修改,默认即可
master_log_file:日志文件名称,填写查看master状态时显示的File
master_log_pos:日志位置,填写查看master状态时显示的Positio
master_connect_retry:重连次数。

4. 启动/关闭 数据同步线程

    mysql> start slave;
    mysql> stop slave;

5、 查看数据同步状态:

    mysql> show slave status\G

当 Slave_IO_Running: YES
   Slave_SQL_Running: YES    都为yes的时候代表同步成功,主从服务器可以进行同步操作了;

数据库主从同步操作_第1张图片

资料链接:
http://www.jb51.net/article/59497.htm
http://blog.csdn.net/zhouzhiwengang/article/details/51725245

你可能感兴趣的:(Mysql学习)