Mysql 主从复制

1.前期准备

准备好2个服务器

1. 主服务器 39.100.10.183  有数据库有表
2. 从服务器 39.100.10.184  空服务器

主从服务器需要有相同的初态
1、将主服务器要同步的数据库枷锁,避免同步时数据发生改变

mysql>use db;
mysql>flush tables with read lock;  

主数据库导出

mysqldump 数据库名称 -u root -p > 数据库名称.sql;

解锁主服务器数据库

mysql>unlock tables;

将导出的数据库发送到从服务器

gzip -c 数据库名称.sql | ssh root@39.100.10.184 "gunzip -c - > /root/数据库名称.sql"

从数据库导入

mysql>create database 数据库名称;
mysql>use 数据库名称;
mysql>source 数据库名称.sql;

2.主从配置

2.1主服务器配置

vi /etc/my.cnf

在[mysqld]中添加

server_id = 1           
 #开启二进制日志                  
log-bin = mysql-bin    
#需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可                  
binlog-do-db = 数据库名称
binlog_format = ROW                   
log-slave-updates                        
sync_binlog = 1                    
auto_increment_offset = 1           
auto_increment_increment = 1            
expire_logs_days = 7                    
log_bin_trust_function_creators = 1 

重启mysql

service mysqld restart 

允许root用户从服务器同步数据的账户

mysql>grant replication slave on *.* to 'root'@'%';
mysql>flush privileges;

查看服务器状态

mysql>show master status\G;
***************** 1. row ****************
            File: mysql-bin.000004 #当前记录的日志
        Position: 156 #日志中记录的位置  
    Binlog_Do_DB: 
Binlog_Ignore_DB:

2.2 从服务器配置

vi /etc/my.cnf

在[mysqld]中添加

server_id = 2
log-bin = mysql-bin
log-slave-updates
sync_binlog = 0
#log buffer将每秒一次地写入log file中,并且log file的
innodb_flush_log_at_trx_commit = 0        
#指定slave要复制哪个库
replicate-do-db = 数据库名称         
slave-net-timeout = 60                    
log_bin_trust_function_creators = 1

执行同步命令

mysql>change master to MASTER_HOST='主服务器ip',MASTER_USER='root',MASTER_PASSWORD='root账户密码',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=156;
mysql>start slave;

查看状态

mysql>show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.10.20.111
                  Master_User: account
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000033
          Read_Master_Log_Pos: 337523
               Relay_Log_File: db2-relay-bin.000002
                Relay_Log_Pos: 337686
        Relay_Master_Log_File: mysql-bin.000033
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
          ...

查看主从情况

mysql>GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'root'@'%';

Slave_IO_Running及Slave_SQL_Running进程必须正常运行,即Yes状态,否则说明同步失败
若失败查看mysql错误日志中具体报错详情来进行问题定位
最后可以去主服务器上的数据库中创建表或者更新表数据来测试同步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值