主服务器master:ip 10.20.100.100
从服务器slave: ip 10.20.100.101
注意:从服务器的版本必须大于等于主服务器的版本

1.修改两台数据库的配置文件
主数据库(10.20.100.100)/etc/my.cnf
[mysqld]下新增

log-bin=mysql-bin

server-id=1
max_binlog_size    = 1024M
expire_logs_days   = 2
binlog-do-db=study           #需要同步的数据库
binlog-ignore-db   =mysql    #不需要同步的数据库
binlog_ignore_db   = test
binlog_ignore_db   = information_schema

从服务器(10.20.100.101)/etc/my.cnf
[mysqld]下新增

log-bin=mysql-bin

server-id= 2
master-host = 10.20.100.100
master-user = chenyu
master-password = 123456
replicate-do-db = study      #需要同步的数据库
replicate-ignore-db = mysql  #不需要同步的数据库
replicate-ignore-db = test
replicate-ignore-db = information_schema
slave-skip-errors=1062,1146,1053,1064,0
skip-name-resolve

key_buffer = 512M
max_allowed_packet = 64M
table_cache = 256
sort_buffer_size = 10M
read_buffer_size = 10M
read_rnd_buffer_size = 24M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 32M
connect_timeout=20

重启数据库

2.在主库上添加用于完成数据同步的用户chenyu,并授权
mysql> grant all privileges on *.* to
chenyu@'%' identified by '123456';
all privileges 所有操作权限
*.*   所有的库的所有表
'%'   任何远程服务器
这样chenyu用户可以从任意一台远程的服务器上访问主库,并进行任何操作

3.记录同步起点
mysql> show master status \G;
*************************** 1. row ***************************
            File: mysql-bin.000086
        Position: 195222746
    Binlog_Do_DB: study
Binlog_Ignore_DB: mysql,test,information_schema
master数据库当前正在使用的二进制日志及当前执行二进制日志位置

4.备份主数据库,导入从数据库
mysqldump -u root --all-databases > /home/mysqlbak.sql
mysql -A < /home/mysqlbak.sql

如果数据量太大,导入导出都会很慢。可以关掉主库,将数据文件拷贝到从库对应目录下,修改好权限。

5.启用同步
mysql> change master to master_user='chenyu',master_password='123456', master_host='10.20.100.100',master_log_file='mysql-bin.000086',master_log_pos=195222746;

查看同步状况
mysql> show slave status \G;
刚开始会有   Seconds_Behind_Master: 1923
如果最后
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
      Seconds_Behind_Master: 0
说明同步成功