zoukankan      html  css  js  c++  java
  • Centos6.8 搭建 Mysql 主从复制

    实例环境:

      MySQL-Master:Centos-6.8:192.168.153.130

      MySQL-Slave:Centos-6.8:192.168.153.131

    1、两台服务器安装mysql

    yum -y install mysql mysql-server

    2、打开mysqld服务并设置密码

    [root@localhost /]# service mysqld start
    初始化 MySQL 数据库: Installing MySQL system tables...
    OK
    Filling help tables...
    OK
    
    To start mysqld at boot time you have to copy
    support-files/mysql.server to the right place for your system
    
    PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
    To do so, start the server, then issue the following commands:
    
    /usr/bin/mysqladmin -u root password 'new-password'
    /usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'
    
    Alternatively you can run:
    /usr/bin/mysql_secure_installation
    
    which will also give you the option of removing the test
    databases and anonymous user created by default.  This is
    strongly recommended for production servers.
    
    See the manual for more instructions.
    
    You can start the MySQL daemon with:
    cd /usr ; /usr/bin/mysqld_safe &
    
    You can test the MySQL daemon with mysql-test-run.pl
    cd /usr/mysql-test ; perl mysql-test-run.pl
    
    Please report any problems with the /usr/bin/mysqlbug script!
    
                                                               [确定]
    正在启动 mysqld:                                          [确定]
    
    [root@localhost /]# mysql_secure_installation    #此命令来设置mysql root密码以及其他
    
    
    
    
    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
          SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
    
    
    In order to log into MySQL to secure it, we'll need the current
    password for the root user.  If you've just installed MySQL, and
    you haven't set the root password yet, the password will be blank,
    so you should just press enter here.
    
    Enter current password for root (enter for none): 
    OK, successfully used password, moving on...
    
    Setting the root password ensures that nobody can log into the MySQL
    root user without the proper authorisation.
    
    Set root password? [Y/n]          #单击回车,或者输入Y点击回车
    New password:       #输入需要设置的密码
    Re-enter new password:      #再次输入需要设置的密码
    Password updated successfully!     #下面一路y就可以,也可以根据自己的需求来选择
    Reloading privilege tables..
     ... Success!
    
    
    By default, a MySQL installation has an anonymous user, allowing anyone
    to log into MySQL without having to have a user account created for
    them.  This is intended only for testing, and to make the installation
    go a bit smoother.  You should remove them before moving into a
    production environment.
    
    Remove anonymous users? [Y/n] 
     ... Success!
    
    Normally, root should only be allowed to connect from 'localhost'.  This
    ensures that someone cannot guess at the root password from the network.
    
    Disallow root login remotely? [Y/n] 
     ... Success!
    
    By default, MySQL comes with a database named 'test' that anyone can
    access.  This is also intended only for testing, and should be removed
    before moving into a production environment.
    
    Remove test database and access to it? [Y/n] 
     - Dropping test database...
     ... Success!
     - Removing privileges on test database...
     ... Success!
    
    Reloading the privilege tables will ensure that all changes made so far
    will take effect immediately.
    
    Reload privilege tables now? [Y/n] 
     ... Success!
    
    Cleaning up...
    
    
    
    All done!  If you've completed all of the above steps, your MySQL
    installation should now be secure.
    
    Thanks for using MySQL!

    3、修改mysqld配置文件,修改mysql-主配置文件

    [root@localhost /]# vim /etc/my.cnf 
    添加以下配置
    server-id=1
    log-bin=mysql-bin #这个一定得设置,否则没有日志的话,从数据库上会报错
    [root@localhost /]# service mysqld stop
    停止 mysqld:                                          [确定]
    [root@localhost /]# service mysqld start
    正在启动 mysqld:                                          [确定]
    [root@localhost /]# service mysqld status
    mysqld (pid  3682) 正在运行...

    4、创建主从复制账号

    mysql> GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO backup@'192.168.153.131' IDENTIFIED BY '123456';
    Query OK, 0 rows affected (0.00 sec)
    
    #192.168.153.131:从服务器地址 
    #backup是授权给从服务器链接的数据库账户
    #123456是密码

    5、解锁表

    mysql> UNLOCK TABLES;
    Query OK, 0 rows affected (0.00 sec)

    6、正确状态应该如下

    mysql> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 |      275 |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)

    7、修改数据库配置,修改从库设置

    [root@localhost /]# vim /etc/my.cnf 
    [mysqld]
    添加语句
    log-bin = mysql-bin
    server_id = 2
    master-host = 192.168.137.33
    master-user = backup
    master-pass = 123456
    master-port = 3306
    master-connect-retry = 60

    8、进入数据库开始配置

    mysql -u root -p
    Enter password:
    #开始配置
    mysql> CHANGE MASTER TO
         MASTER_HOST='192.168.153.130', #主服务器地址
         MASTER_USER='backup',    #主服务器授权的账户
         MASTER_PASSWORD='123456',  #主服务器授权的账户密码
         MASTER_PORT=3306,   #数据库端口
         MASTER_LOG_FILE='mysql-bin.000001',  #主服务器log-file
         MASTER_LOG_POS=251,    #主服务器Position
         MASTER_CONNECT_RETRY=10;  #重新连接时间
    Query OK, 0 rows affected (0.02 sec)

      如果上一步出现失败,查看是否slave服务已经打开,如果发现打开,先关闭slave服务才能继续进行配置

    9、测试主从是否配置好

    mysql> SHOW SLAVE STATUSG
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.153.130
                      Master_User: backup
                      Master_Port: 3306
                    Connect_Retry: 10
                  Master_Log_File: mysql-bin.000001
              Read_Master_Log_Pos: 275
                   Relay_Log_File: mysqld-relay-bin.000002
                    Relay_Log_Pos: 251
            Relay_Master_Log_File: mysql-bin.000001
                 Slave_IO_Running: Yes  #这两个一定要是Yes , 要不然会数据同步不过来
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: 
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 0
                       Last_Error: 
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 275
                  Relay_Log_Space: 407
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
    1 row in set (0.00 sec)

    10、数据库测试:

    在主服务器上创建test数据库

    mysql> create database test;
    Query OK, 1 row affected (0.00 sec)
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | test               |
    +--------------------+
    3 rows in set (0.00 sec)
    
    mysql> 

    在从服务器上查看下是否有test数据库

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | test               |
    +--------------------+
    3 rows in set (0.00 sec)
    
    mysql> 

    至此,就完成了主从复制的服务。

    主从复制完成,但是还不能满足我们的需求。这种配置方式只是将主库的数据同步到从库。
    我们设想下:有一天我们往从库插入或者删除数据,那么主库的数据不会得到改变。就会造成数据不一致。
     
    如果想配置主从双向同步,点击跳转: Mysql主从双向同步
    如果想配置读写分离,点击跳转:Mysql读写分离
  • 相关阅读:
    两个数组的交集 II
    存在重复
    旋转数组
    从排序数组中删除重复项
    ps 修补工具
    最长公共前缀
    meta 属性
    19年面试总结
    java文件下载以及中文乱码解决
    关于web开发中,图片加载失败替换为默认图片
  • 原文地址:https://www.cnblogs.com/willamwang/p/8043322.html
Copyright © 2011-2022 走看看