zoukankan      html  css  js  c++  java
  • Linux下MySQL数据库主从同步配置

    说明:

    操作系统:CentOS 5.x 64位

    MySQL数据库版本:mysql-5.5.35

    MySQL主服务器:192.168.21.128

    MySQL从服务器:192.168.21.129

    准备篇:

    说明:在两台MySQL服务器192.168.21.128和192.168.21.129上分别进行如下操作

    备注:

    作为主从服务器的MySQL版本建议使用同一版本!

    或者必须保证主服务器的MySQL版本要高于从服务器的MySQL版本!

    一、配置好IP、DNS 、网关,确保使用远程连接工具能够连接服务器

    二、配置防火墙,开启3306端口

    vi /etc/sysconfig/iptables  #编辑

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT  #允许3306端口

    特别提示:如果这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面,添加好之后防火墙规则如下所示:

    #########################################################

    # Firewall configuration written by system-config-securitylevel

    # Manual customization of this file is not recommended.

    *filter

    :INPUT ACCEPT [0:0]

    :FORWARD ACCEPT [0:0]

    :OUTPUT ACCEPT [0:0]

    :RH-Firewall-1-INPUT - [0:0]

    -A INPUT -j RH-Firewall-1-INPUT

    -A FORWARD -j RH-Firewall-1-INPUT

    -A RH-Firewall-1-INPUT -i lo -j ACCEPT

    -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT

    -A RH-Firewall-1-INPUT -p 50 -j ACCEPT

    -A RH-Firewall-1-INPUT -p 51 -j ACCEPT

    -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT

    -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT

    -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT

    -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

    -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

    COMMIT

    #########################################################

    /etc/init.d/iptables restart #最后重启防火墙使配置生效

    三、关闭SELINUX

    vi /etc/selinux/config

    #SELINUX=enforcing #注释掉

    #SELINUXTYPE=targeted #注释掉

    SELINUX=disabled #增加

    :wq  #保存退出

    setenforce 0 #立即生效

    四 、系统约定

    软件源代码包存放位置:/usr/local/src

    源码包编译安装位置:/usr/local/软件名字

    五、下载软件包

    1、下载MySQL

    http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.35.tar.gz

    2、下载cmake(MySQL编译工具)

    http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz

    以上软件包上传到/usr/local/src目录

    六、安装编译工具及库文件(使用CentOS yum命令安装)

    yum install -y make apr* autoconf automake curl curl-devel gcc gcc-c++ gtk+-devel zlib-devel openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat*  cpp glibc libgomp libstdc++-devel keyutils-libs-devel libsepol-devel libselinux-devel krb5-devel  libXpm* freetype freetype-devel freetype* fontconfig fontconfig-devel  libjpeg* libpng* php-common php-gd gettext gettext-devel ncurses* libtool* libxml2 libxml2-devel patch policycoreutils bison

    安装篇

    说明:在两台MySQL服务器192.168.21.128和192.168.21.129上分别进行如下操作,安装mysql-5.5.35

    以下是远程登录到服务器,在命令行下面操作的

    一、安装cmake

    cd /usr/local/src

    tar zxvf cmake-2.8.12.1.tar.gz

    cd cmake-2.8.12.1

    ./configure

    make #编译

    make install #安装

    二、安装mysql

    groupadd mysql  #添加mysql组

    useradd -g mysql mysql -s /bin/false  #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统

    mkdir -p /data/mysql  #创建MySQL数据库存放目录

    chown -R mysql:mysql /data/mysql   #设置MySQL数据库目录权限

    mkdir -p /usr/local/mysql-5.5.35 #创建MySQL安装目录

    ln -s /usr/local/mysql-5.5.35 /usr/local/mysql  #创建软连接到mysql目录,方便后面的配置

    cd /usr/local/src

    tar zxvf mysql-5.5.35.tar.gz  #解压

    cd mysql-5.5.35

    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  -DMYSQL_DATADIR=/data/mysql  -DSYSCONFDIR=/etc   #配置

    make #编译

    make install  #安装

    cd /usr/local/mysql

    cp ./support-files/my-huge.cnf  /etc/my.cnf   #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)

    vi /etc/my.cnf   #编辑配置文件,在 [mysqld] 部分增加

    datadir = /data/mysql  #添加MySQL数据库路径

    ./scripts/mysql_install_db --user=mysql  #生成mysql系统数据库

    cp ./support-files/mysql.server  /etc/rc.d/init.d/mysqld  #把Mysql加入系统启动

    chmod 755 /etc/init.d/mysqld   #增加执行权限

    chkconfig mysqld on  #加入开机启动

    vi /etc/rc.d/init.d/mysqld  #编辑

    basedir = /usr/local/mysql   #MySQL程序安装路径

    datadir = /data/mysql  #MySQl数据库存放目录

    service mysqld start  #启动

    vi /etc/profile   #把mysql服务加入系统环境变量:在最后添加下面这一行

    export PATH=$PATH:/usr/local/mysql/bin

    source  /etc/profile #使配置立即生效

    下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。

    ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

    ln -s /usr/local/mysql/include/mysql /usr/include/mysql

    mkdir /var/lib/mysql  #创建目录

    ln -s /tmp/mysql.sock  /var/lib/mysql/mysql.sock   #添加软链接

    mysql_secure_installation   #设置Mysql密码,根据提示按Y 回车输入2次密码

    /usr/local/mysql/bin/mysqladmin -u root -p password "123456"   #或者直接修改密码

    到此,mysql安装完成!

    配置篇

    一、配置MySQL主服务器(192.168.21.128)

    mysql -u root -p  #进入MySQL控制台

    create database osyunweidb;   #建立数据库osyunweidb

    insert into mysql.user(Host,User,Password) values('localhost','osyunweiuser',password('123456'));   #创建用户osyunweiuser,密码123456

    grant all on osyunweidb.* to 'osyunweiuser'@'192.168.21.130' identified by '123456' with grant option;  #授权用户osyunweiuser从192.168.21.130完全访问数据库,注意:这里的192.168.21.130是要连接数据库Web服务器IP

    insert into mysql.user(Host,User,Password) values('localhost','osyunweidbbak',password('123456'));   #建立MySQL主从数据库同步用户osyunweidbbak密码123456

    flush privileges;   #刷新系统授权表

    grant replication slave  on *.* to 'osyunweidbbak'@'192.168.21.129' identified by '123456' with grant option;  #授权用户osyunweidbbak只能从192.168.21.129这个IP访问主服务器192.168.21.128上面的数据库,并且只具有数据库备份的权限

    二、把MySQL主服务器192.168.21.128中的数据库osyunweidb导入到MySQL从服务器192.168.21.129中

    1、导出数据库osyunweidb

    mysqldump -u root -p --default-character-set=utf8 --opt -Q -R --skip-lock-tables osyunweidb > /home/osyunweidbbak.sql    #在MySQL主服务器进行操作,导出数据库osyunweidb到/home/osyunweidbbak.sql

    备注:在导出之前可以先进入MySQL控制台执行下面命令

    flush tables with read lock;    #数据库只读锁定命令,防止导出数据库的时候有数据写入

    unlock tables;   #解除锁定

    scp /home/osyunweidbbak.sql root@192.168.21.129:/home   #把home目录下的osyunweidbbak.sql 数据库文件上传到MySQL从服务器的home目录下面

    2、导入数据库到MySQL从服务器

    mysql  -u root -p  #进入从服务器MySQL控制台

    create database osyunweidb;   #创建数据库

    use osyunweidb    #进入数据库

    source  /home/osyunweidbbak.sql  #导入备份文件到数据库

    mysql -u osyunweidbbak -h 192.168.21.128 -p  #测试在从服务器上登录到主服务器

    三、配置MySQL主服务器(192.168.21.128)的my.cnf文件

    vi /etc/my.cnf   #编辑配置文件,在[mysqld]部分添加下面内容

    server-id=1   #设置服务器id,为1表示主服务器,注意:如果原来的配置文件中已经有这一行,就不用再添加了。

    log-bin=mysql-bin  #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。

    binlog-do-db=osyunweidb  #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行

    binlog-ignore-db=mysql   #不同步mysql系统数据库

    :wq!   #保存退出

    service mysqld  restart  #重启MySQL

    mysql -u root -p   #进入mysql控制台

    show variables like 'server_id';  #查看server-id的值是否为1

    mysql> show variables like 'server_id';

    +---------------+-------+

    | Variable_name | Value |

    +---------------+-------+

    | server_id     | 1     |

    +---------------+-------+

    1 row in set (0.00 sec)

    show master status;  #查看主服务器,出现以下类似信息

    mysql> show master status;

    +------------------+----------+--------------+------------------+

    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

    +------------------+----------+--------------+------------------+

    | mysql-bin.000011 |      107 | osyunweidb   | mysql            |

    +------------------+----------+--------------+------------------+

    1 row in set (0.00 sec)

    注意:这里记住File的值:mysql-bin.000011和Position的值:107,后面会用到。

    四、配置MySQL从服务器(192.168.21.129)的my.cnf文件

    vi /etc/my.cnf   #编辑配置文件,在[mysqld]部分添加下面内容

    server-id=2   #设置服务器id,修改其值为2,表示为从数据库

    log-bin=mysql-bin  #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。

    replicate-do-db=osyunweidb   #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行

    replicate-ignore-db=mysql   #不同步mysql系统数据库

    read_only  #设置数据库只读

    :wq!    #保存退出

    service mysqld restart   #重启MySQL

    mysql  -u root -p  #进入MySQL控制台

    show variables like 'server_id';  #查看server-id的值,必须为上面设置的2,否则请返回修改配置文件

    mysql> show variables like 'server_id';

    +---------------+-------+

    | Variable_name | Value |

    +---------------+-------+

    | server_id     | 2     |

    +---------------+-------+

    1 row in set (0.01 sec)

    slave stop;   #停止slave同步进程

    change master to master_host='192.168.21.128',master_user='osyunweidbbak',master_password='123456',master_log_file='mysql-bin.000011' ,master_log_pos=107;    #执行同步语句

    slave start;    #开启slave同步进程

    SHOW SLAVE STATUSG   #查看slave同步信息,出现以下内容

    mysql> SHOW SLAVE STATUSG

    *************************** 1. row ***************************

    Slave_IO_State: Waiting for master to send event

    Master_Host: 192.168.21.128

    Master_User: osyunweidbbak

    Master_Port: 3306

    Connect_Retry: 60

    Master_Log_File: mysql-bin.000011

    Read_Master_Log_Pos: 107

    Relay_Log_File: mysqlslave-relay-bin.000004

    Relay_Log_Pos: 253

    Relay_Master_Log_File: mysql-bin.000011

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    Replicate_Do_DB: osyunweidb

    Replicate_Ignore_DB: mysql

    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: 107

    Relay_Log_Space: 560

    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:

    Replicate_Ignore_Server_Ids:

    Master_Server_Id: 1

    1 row in set (0.00 sec)

    mysql>

    注意查看:

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    以上这两个参数的值为Yes,即说明配置成功!

    测试篇

    测试MySQL主从服务器是否正常运行

    1、进入MySQL主服务器(192.168.21.128)

    mysql -u root -p  #进入MySQL控制台

    use osyunweidb   #进入数据库

    CREATE TABLE test ( id int not null primary key,name char(20) );   #创建test表

    2、进入MySQL从服务器

    mysql -u root -p  #进入MySQL控制台

    use osyunweidb   #进入数据库

    show  tables;  #查看osyunweidb表结构,会看到有一个新建的表test,表示数据库同步成功

    mysql> show  tables;

    +----------------------+

    | Tables_in_osyunweidb |

    +----------------------+

    | test                 |

    +----------------------+

    1 row in set (0.00 sec)

    至此,Linux下MySQL数据库主从同步配置完成! 

    转载:系统运维>>Linux下MySQL数据库主从同步配置

  • 相关阅读:
    16. 3Sum Closest
    17. Letter Combinations of a Phone Number
    20. Valid Parentheses
    77. Combinations
    80. Remove Duplicates from Sorted Array II
    82. Remove Duplicates from Sorted List II
    88. Merge Sorted Array
    257. Binary Tree Paths
    225. Implement Stack using Queues
    113. Path Sum II
  • 原文地址:https://www.cnblogs.com/qinmei/p/7117636.html
Copyright © 2011-2022 走看看