mysql学习足迹之三【MYSQL主从服务器配置说明(master&slave)】

来源:互联网 发布:层次分析法软件 编辑:程序博客网 时间:2024/06/06 10:05
在研究mysql的过程中,从源码安装,多实例部署和启动到现在要说的主从服务器配置,因为之前没有运维的经验,一切都自己来做,挺有意思的,废话不说了,进入正题了。


     先简单说明下主从服务器配置的好处(网上一搜一大把):

单向复制有利于健壮性、速度和系统管理:

1、主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到从服务器作为备份。

2、通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。SELECT查询可以发送到从服务器以降低主服务器的查询处理负荷。但修改数据的语句仍然应发送到主服务器,以便主服务器和从服务器保持同步。如果非更新查询为主,该负载均衡策略很有效,但一般是更新查询。

3、使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。


     选择一台服务器作为主服务器,选择另外一台作为从服务器,2者的mysql版本保持一致

     1.我要同步的库名是demon,同步账号我暂时用的是root, 你也可以由root创建并授权一个账号

     2. master配置

    a.修改master服务器的配置文件my.cnf

           找到server-id的配置地方,我继续采用的是server-id=1,注意从服务器的server-id需要保持与主服务不同;

            然后添加以下配置:

            log-bin=/home/demon/mysql/data/mysql-bin.000001             #这个是主服务器放置数据库二进制文件的地方

            binlog_format=mixed

            binlog-do-db=demon                                                               #要复制的数据库名,如复制多个库可添加多行

            binlog-ignore-db=mysql                                                           #不需要复制的数据库名,也可列出多行

            binlog-ignore-db=test

            binlog-ignore-db=information_schema

            这样就完成了主服务的配置添加,重启下 master的mysql服务,连接进入主mysql服务看看运行情况

            mysql> show master status;

+------------------+------------------+----------+--------------+-----------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB  |
+------------------+----------+--------------+-------------------------------+
| mysql-bin.000004 |      829 | demon        | mysql,test,information_schema | 
+------------------+----------+--------------+-------------------------------+

           记录下该文件名mysql-bin.000004和偏移量829  ,会在之后从服务的初始化设置中用到。

       b.使用mysqldump导出master服务器中的demon数据库

           ~$ cd /home/demon/mysql/bin

           ~$ ./mysqldump --master-data=1 --lock-all-tables=true -u root demon>/home/demon/demon_bak.sql

           #上面命令中必须要加入--master-data选项,保证在dump时会记录到binlog名称和偏移值

           #使用--lock-all-tables的原因就是为了数据在导出的时候没有其它新数据插入,保证一致性

           #你可以根据实际情况来导数据,不一定要使用root账号

          导出的demon_bak.sql你就可以再从服务器上进行初始化动作了,看后面的使用。

     3.slave配置

         a.相对master服务的配置来说,slave的配置就少了很多,只需要改动server-id与master不一致即可

            slave服务中my.cnf的server-id我改为了2,即   server-id=2

         b.重启slave的mysql服务

         c.连接slave服务进行一些初始化操作

         mysql> create database demon;                       #与主库一样建同样的库demon

         mysql> use demon;

         mysql> source /home/demon/demon_bak.sql   #备份文件你是从主库copy过来的,放在哪里都OK

         现在可以查看是否有导入成功

         mysql> show tables;

         如果你之前没有重启过slave服务,现在可以退出之后重启

         连接slave mysql服务

         mysql> change master  to  

         mysql> master_host='***.***.***.***',          #master服务所在的IP

         mysql> master_user='root',                       #连接master服务的用户名

         mysql> master_port=3400,                       #master服务端口号 

         mysql> master_log_file='mysql-bin.000001',  #master的二进制数据文件,在master配置的时候有指明 

         mysql> master_log_pos=107,                   #最近成功更新的偏移值

         mysql> master_connect_retry=30;

     d.启动slave服务

         mysql>start slave;

         mysql>show slave status;     进行查看同步运行情况


      总算是完结了,你可以再主服务那边进行插入更新删除操作,然后来从服务查看,会发现数据已同步了,完美的配置,可以以此为经验进行之后的学习了......


       忘记说明主从服务同步日志存放位置:

       均放在从服务data目录下     master.info  与 relay-log.info

原创粉丝点击