发新话题
打印

window 下的MYSQL主从同步

window 下的MYSQL主从同步

1,在master上为slave建立用户并给一个replication slave权限
        grant replication slave on datename.*  to  ‘用户名[url=]' @ '[/url]主机地址' identified  by “密码"
       flush privileges;刷新权限
    2,配置my.ini文件
        log-bin=mysql-bin        #启用二进制日志文件
        log-bin="C:/Program Files/MySQL/MySQL Server 5.1/log/updatelog"        #设定日志文件名
        server-id=1                    #设置数据库ID
        binlog-do-db=databasename        #二进制需要同步的数据库(多个用逗号分隔)
        binlog-ignore-db=mysql                #避免同步的数据库(多个用逗号分隔)
        #配置主从同步
        server-id=2 #从服务器ID
        master-host=10.3.13.186 #主服务器IP
        master-user=gnh1 #主服务器登陆名
        master-password=112233 #主服务器登陆密码
        master-port=3306 #主服务器断口
        master-connect-retry=60 #断点从新连接时间(秒)
        replicate-ignore-db=mysql #屏蔽对MYSQL库的同步
        replicate-do-db=wuliu  #二进制需要同步的数据库
    3,在从库远程导入需要同步的数据库
       mysqldump -u root -p -h 10.3.13.186 databasename>c:\databasename.sql        #远程备份表
       create database databasename        #创建表
       mysql -u root -p -f -D databasename<c:\databasename        #导入表
    4,在从数据库上slave stop 停掉slave服务
        在主数据库上show master  status查看主服务状态
        在从数据库上change master  to master_host='主数据库IP',master_user='username',master_password='password',master_log_file='查询到的二进制文件',master_log_pos='查询到的position'
        在从数据库上slave start 重启slave 服务
        show slave status\g 查看同步结果
        Slave_IO_Running=YES    Slave_SQL_Running=YES 同步成功
        如果Slave_IO_Running=NO
        1,检查错误日志,查看连接的主机,用户名,权限是否正确
        2,如果包太大,show VARIABLES like '%max_allowed_packet%';查看包的最大限制并做调整
        如果Slave_SQL_Running=NO
        1,检查是否从库有数据更新或写入操作
        2,slave进程重启,事务回滚造成。先slave stop掉slave进程。set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; 再slave start 重启进程。

TOP

主库相关操作

1.flush tables with read lock;    //主库上锁表

2.show master status;   //记录 master log file及file position
比如:
+--------------------------+----------------+-------------------+------------------------+
| File                          | Position       | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------------+----------------+--------------------+-----------------------+
| xxxx-log.000031     | 199039244     | xxxx                   |                              |
+--------------------------+----------------+--------------------+-----------------------+

3.$tar -cvf database.tar ./data   //备份数据文件

4.unlock tables;   //解锁主库表

从库相关操作

1.将主库数据库文件copy到从库中
2.启动从库
3.stop slave;
4.reset slave;
5.change master to master_host='10.xx.xx.xxx,master_user='xxxx',master_password='xxxx',master_port=xxxx,master_log_file='xxxx-log.000031',master_log_pos=199039244;
5.start slave;
验证方法一:
//登陆从库
slave status\G;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
上面2项都为'Yes',表示slave正常

验证方法二:
//登陆主库
show processlist;
Has read all relay log; waiting for the slave I/O thread to update it
表示正常

TOP

发新话题