mysql主从配置

主服务器 :66.10.113.186

从服务器 :66.10.113.204

 

主服务器上有数据库且数据库中有相应的表结构

从服务器上无任何数据

 

主从服务器需要有相同的初始状态 

 

一 、准备工作

 

    ssh  66.10.113.186

 

    1.登陆主服务器mysql

        mysql -u root -p 

    2.切换到需要执行主从的数据库

        Use db

    3.给数据库表加上只读锁

        Flush tables with read lock

    4.将主服务器数据库中数据导出

        Mysqldump -u root -p db > db.sql

 

    Ssh 66.10.113.204

    1.登录从服务器mysql

        Mysql -u root -p

    2.创建数据库

        create database db;

    3.将主服务器数据导入

        Use db;

        Source db.sql

 

    至此 ,主从服务器具有了一样的初始数据。

 

二 、主服务器配置

 

    修改mysql配置

        vi /etc/my.cfg

    往配置文件中添加以下内容

       #主数据库端ID号

        server_id = 1          

        #开启二进制日志                 

        log-bin = mysql-bin   

        #需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可                 

        binlog-do-db = db       

        #将从服务器从主服务器收到的更新记入到从服务器自己的二进制日志文件中               

        log-slave-updates                       

        #控制binlog的写入频率。每执行多少次事务写入一次(这个参数性能消耗很大,但可减小MySQL崩溃造成的损失)

        sync_binlog = 1                   

        #这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突

        auto_increment_offset = 1          

        #这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突

        auto_increment_increment = 1           

        #二进制日志自动删除的天数,默认值为0,表示“没有自动删除”,启动时和二进制日志循环时可能删除 

        expire_logs_days = 7                           

        #将函数复制到slave 

        log_bin_trust_function_creators = 1  

 

    重启mysql使配置文件生效

        Systemctl  restart mysql

    

    创建允许从服务器同步数据的账号

        grant replication slave on *.* to 'slaveDbUser'@'%' identified by 'password’  ;

    更新数据库权限

        Flush privileges;

 

    查看主服务器状态

        

 

    记下File 以及 Position 字段的值 ,后续会用到该值

 

 

三 、从服务器配置

 

    修改mysql配置

        vi /etc/my.cfg

    往配置文件中添加以下内容

        server_id = 2

        log-bin = mysql-bin

        log-slave-updates

        sync_binlog = 0

        #log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写        入磁盘的操作

        innodb_flush_log_at_trx_commit = 0       

        #指定slave要复制哪个库

        replicate-do-db = db        

        #MySQL主从复制的时候,当Master和Slave之间的网络中断,但是Master和Slave无法察觉的情况下(比如防火墙或者路由问                        题)。Slave会等待slave_net_timeout设置的秒数后,才能认为网络出现故障,然后才会重连并且追赶这段时间主库的数据

        slave-net-timeout = 60                   

        log_bin_trust_function_creators = 1        

 

    重启mysql使得配置文件生效

        Systemctl restart mysql

    执行同步命令

         change master to master_host=’66.10.113.204',master_user='slaveDbUser',master_password=‘password',master_log_file='mysql-bin.000001',master_log_pos=1062; (最后两个参数的值同主服务器状态中的File及Position值)

    开启同步功能

        Start slave ;

 

    此时不要忘记 ,打开主服务器中锁住的数据库

        ssh 66.10.113.186

        use db

        Unlock tables ;

    查看从服务器状态

        

    

       Slave_IO_Running及Slave_SQL_Running进程必须正常运行,即Yes状态,否则说明同步失败

 

    注:若同步失败,自行查阅mysql错误日志,在此不再赘述,mysql错误日志地址在my.cfg文件里有存储

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值