• MySQL主从复制


    服务器多MySQL服务搭建和主从复制

    一、One_Server多MySQL服务搭建

      【1】第一个MySQL服务搭建

        在这里不做介绍,我们认为第一个MySQL服务已经搭建完成;

      【2】复制MySQL的basedir目录

    # cp /usr/local/mysql/ /usr/local/mysql_s   //假如原来的MySQL的basedir为/usr/local/myql/
    

       【3】拷贝配置文件

    # cp /usr/local/mysql_s/support_files/my-small.cnf /usr/local/mysql_s/my.cnf
    # vim /usr/local/mysql_s/my.cnf
        [mysqld]
        port = 3307    //原来的MySQL的 port = 3306
        socket = /tmp/mysql_s.sock    //原来的MySQL的socket在/tmp/mysql.sock
    

        【4】拷贝启动脚本并修改

    # cp /etc/init.d/mysqld /etc/init.d/mysqld_s
    # vim /etc/init.d/mysqld_s
        basedir=/usr/local/mysql_s 
        datadir=/data/mysql_s    //原MySQL的datadir=/data/mysql
        conf=$basedir/my.cnf    //在上面两项加上conf的路径,之前复制到了basedir下面了
    

       【5】初始化

    # cd /usr/local/mysql_s
    # ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql_s --datadir=/data/mysql_s
    

       【6】启动第二个MySQL服务  

    # /etc/init.d/mysqld_s start
    # ps grep |grep mysqld  //应该可以看到两组MySQL服务的数据
    

       【7】关于两个MySQL服务的登录问题

      登录两个MySQL,可以通过端口:

    # mysql -h127.0.0.1 -P3306    //大P指定端口,登录另一个用-P3307;h指定host,因为是主机,用127.0.0.1
    

      也可以通过socket:

    # mysql -S /tmp/mysql.sock   //登录另一个的时候,用-S /tmp/mysql_s.sock
    

    二、MySQL主从搭建

    注: 1. MySQL的主从复制比较脆弱,很容易中断,最好设定监控,对Slave_MySQL的Slave_IO_Running: Yes,Slave_SQL_Running: Yes进行监控,确保都是Yes才行。

       2. MySQL的主从复制,操作方只能是Master_MySQL,Slave_MySQL方操作会出错。

      下面演示两台server,两个MySQL服务主从复制的搭建方法。假如Mster和Slave服务器MySQL的安装配置完全一样.

      Master_IP:192.168.220.120, Slave_IP:192.168.220.130

      【1】修改Master_MySQL的配置:

    # vim /etc/my.cnf
        [mysqld]
        server-id  = 1   //主MySQL服务的server-id不能和从服务器的一样
        log-bin=lius   //打开二进制日志,等号后面自定义,在datadir下出现lius.000001样的二进制日志
        binlog-ignore-db = mysql  //也可以是binlog-do-db=db1,db2,指定多个同步数据库,指定忽略同步的库
    # /etc/init.d/mysqld restart
    

      【2】登录Master_MySQL,进行下面操作:

    mysql> grant replication slave on *.* to lius@'192.168.220.130' identified by 'dddd7788';  //授权用户,指定slave的ip,仅给replication权限。
    mysql> flush privileges;    //刷新权限
    mysql> flush tables with read lock;      //锁表,确定数据相同
    mysql> show master status;     //显示值,对后面配置从服务器有用
    +-------------+----------+--------------+------------------+
    | File        | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +-------------+----------+--------------+------------------+
    | lius.000002 |      337 |              | mysql            |
    +-------------+----------+--------------+------------------+
    

      【3】备份Master_MySQL数据,以便还原到Slave_MySQL,实现数据一致:

    # mysqldump --all-databases --ignore-tables=mysql.* --default-character-set=utf8 > all.sql   //忽略mysql库的同步,指定默认字符集为utf8
    

      【4】Slave_MySQL配置参数修改:

    # vim /etc/my.cnf
        server-id=2   //确保和主服务器不一样
        replicate-ignore-db=mysql   //因主已经指定,从可选择性进行配置,也可以写成replicate-do-db=db1,db2的形式
    # /etc/init.d/mysqld restart   //重启服务,从服务器的log-bin可以不打开
    # mysql --default-character-set=utf8 < all.sql //还原主服务器的备份文件,文件因为跨服务器,可以用scp或者lrzsz这个包的功能来实现

      【5】登录Slave_MySQL,作如下操作:

    mysql> slave stop;  //停止slave
    mysql> change master to master_host='192.168.220.120', master_port=3306, master_user='lius', master_password='dddd7788', 
    master_log_file='lius.000002', master_log_pos=337;
    //指定主服务器的ip;指定主MySQL端口;指定登录主服务器的用户名和密码;指定上面mysql> show master status 的两个重要数据,可对照上面表格;
    //然后,还需进入主的MySQL登录界面,解除读锁,因为之前加了mysql> flush tables with read lock,现在需要mysql> unlock tables,然后回到从MySQL进行下面操作: mysql> slave start;

      【6】测试主从复制是否成功:

    mysql> show slave status; 得到以下两项全部是Yes,即说明主从复制配置成功;在Master_MySQL的登录界面,进行建表、删表等操作,在Slave_MySQL看结果是否同步,检验主从效果。
      Slave_IO_Running: Yes   Slave_SQL_Running: Yes
  • 相关阅读:
    APP性能测试工具GT的使用总结:app内存测试
    app专项测试:app静态测试(耗时、流量、内存、图片大小)
    沟通的重要性
    [改善Java代码]推荐覆写toString方法
    [改善Java代码]使用package-info类为包服务
    [改善Java代码]不要主动进行垃圾回收
    [改善Java代码]推荐使用String直接量赋值
    [改善Java代码]在接口中不要存在实现代码
    [改善Java代码]不要随便设置随机种子
    [改善Java代码]优先使用整型池
  • 原文地址:https://www.cnblogs.com/llius/p/5089647.html
Copyright © 2020-2023  润新知