zoukankan      html  css  js  c++  java
  • centos mysql数据库主从同步

    环境:

    1.软件:mysql 5.5.19版本  cmake2.8.10.2                                mysql5.5以下的版本不需要cmake

    2.两台PC 分别PC1主数据库192.168.4.28

                       PC2从数据库192.168.4.30

    目的,实现主数据库创建库或者表等相关数据,从数据库会立刻同步

    一、安装mysql

    1.mysql数据库安装位置/usr/local/mysql

    mysql数据位置/data/mysql

    mysql配置文件位置/etc/my.cnf

    2.创建mysql用户组 groupadd mysql

    3.创建mysql用户    useradd -r -g mysql mysql

    4.源码安装cmake

    tar -zxvf cmake -C /usr/src

    ./usr/src/cmake/configure 

    make 

    make install

    5.源码安装mysql

    tar -zxvf mysql -C /usr/src

    cd /usr/src/mysql/

    cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55 

    >  -DDEFAULT_CHARSET=gbk 

    >  -DDEFAULT_COLLATION=gbk_chinese_ci 

    >  -DENABLED_LOCAL_INFILE=ON 

    >  -DWITH_INNOBASE_STORAGE_ENGINE=1 

    >  -DWITH_FEDERATED_STORAGE_ENGINE=1 

    >  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 

    >  -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 

    >  -DWITHOUT_PARTITION_STORAGE_ENGINE=1 

    >  -DWITH_COMMENT="jss edition" 

    >  -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock 

    >  -DSYSCONFDIR=/data/mysql

    6.执行编译

    make

    7.编译安装

    make install

    8.首先修改目录安装的所有者,以后后期没有修改权限或内部访问错误

    cd /usr/local/mysql55        看清楚路径

    chown -R mysql:mysql ./

    9.连接安装mysql db库文件

    1. scripts/mysql_install_db --user=mysql  --basedir=/usr/local/mysql --datadir=/usr/local/mysql 
    2. chown -R root .   
    3. chown -R mysql ./data

    输出:

    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:
    ./bin/mysqladmin -u root password 'new-password'
    ./bin/mysqladmin -u root -h rhel5u3 password 'new-password'
    Alternatively you can run:
    ./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 . ; ./bin/mysqld_safe &
    You can test the MySQL daemon with mysql-test-run.pl
    cd ./mysql-test ; perl mysql-test-run.pl
    Please report any problems with the ./bin/mysqlbug script!

    如果报错 仔细查看命令是否正确

    10.复制mysql的配置文件

    cp support-files/my-medium.cnf /etc/my.cnf

    11.复制mysql的启动脚本

    1. cp support-files/mysql.server /etc/init.d/mysqld  
    2. chmod +x /etc/init.d/mysqld  
    3. chkconfig –add mysqld

    12.修改/etc/profile文件为了方便,将mysql 的bin目录加到PATH中

    找到export那项,在单出一行添加如下:

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

    13.声明系统文件并立刻生效

    source /etc/profile

    14.打开mysql并设置密码,

    service mysql start

    mysqladmin -u root password admin@flush.so3

    注意刚安装完mysql 无密码所以不需要-p  直接用password 在后面添加你设置的密码

    15.同样的,两个pc安装mysql同样方式 同样步骤

    二、开始整数据同步啦

    首先我们需要准备一个sql脚本或者自己手直接敲进mysql数据库

    主库操作:

    1.修改/etc/my.cnf

    修改server-ID 不能想通

    server-id =1 

    log-bin = binlog

    binlog-d0-db =mydata

    binlog-ignore-db=mysql

    2.重启mysql数据库

    service mysqld restart

    3.登陆数据库

    mysql -uroot -p

    4.赋予一个admin账户对数据库上读取日志

    mysql>grant replication slave on * .*to 'admin'@'192.168.4.28' identified by 'admin@flush.so3'

    5.锁定数据库主表 同步信息需要

    mysql>flush tables with read lock;

    6.显示主库信息

    show master status;

    7.mydata数据库表信息bin相关的文件信息,给dump下来(并不是把里面的数据给备份出来)

    mysqldump --master -data -u root -p mydata > mydata.sql

    8.设置从库

    1.首先两个pc库内容是一致的 ,我们要做的就是把mydata.sql这个表信息给导入进去

    2.修改/etc/my.cnf

    server-id =2 

    log-bin = binlog

    binlog-d0-db =mydata

    binlog-ignore-db=mysql

    3.把之前主库上导出来的mydata.sql导入进去,注意(并不是覆盖,而是把里面的数据表面信息给内置进去)

    看图:剖析我们导出的信息表内容:

    里面没有任何关于创建表 或者覆盖之类的信息吧?全是一些key check 还有时间 及masterlog相关的,白色字体那样 就是上面那个图把里面的信息嵌入里面,

    那么我们对从库导入进去的话,就是把这层信息给镶嵌上去,自然再后面的时候IO_runing就会yes了

    导入命令:

    mysql -u root -p mydata </root/mydata.sql

    重启从数据库

    service mysqld restart

    4.进入数据库开始设置同步

    首先mysql>slave stop;停止同步

    mysql>change master to master_host = '192.168.4.28',master_user= 'admin',master_password = 'admin@flush.so3',master_log_file = 'mysql-bin-000010',master_log_pos = 107;设置master host user password bin-log pos-log   等这些

    mysql>slave start;开启同步

    5.查看同步状态

    mysql>show salve statusG;

    如果 Slave_IO_Running: NO 你要考虑 网络是否正常 防火墙 selinux ,数据库表信息 就之前上面的那图介绍剖析和你本身的库文件

    还要匹配你的bin-log是否正常 是否为锁定状态

    如果Slave_SQL_Running: NO

    需要考虑你的数据结构是否正常 是否一致

    7.测试我们在主数据库上创建一个库文件,那么从数据库不就会立刻更新,根据数据大小 网络 来决定同步时间

    图就不上传了如果是两个yes 就可以测试通过。










  • 相关阅读:
    老猿学5G扫盲贴:移动边缘计算(Mobile Edge Computing, MEC)
    第15.42节、PyQt输入部件:QFontComboBox、QLineEdit、QTextEdit、QPlainText功能详解
    第三十五章、PyQt输入部件:QFontComboBox、QLineEdit、QTextEdit、QPlainText功能详解
    老猿学5G扫盲贴:N6接口用户平面协议栈对应的网络分层模型
    PyQt(Python+Qt)学习随笔:纯文本编辑器QPlainTextEdit功能详解
    PyQt(Python+Qt)学习随笔:富文本编辑器QTextEdit功能详解
    程序员求职之道(《程序员面试笔试宝典》)之如何看待一份工作的稳定性?
    程序员求职之道(《程序员面试笔试宝典》)之程序员的健康谁来保证?
    程序员求职之道(《程序员面试笔试宝典》)之快乐编程的好习惯有哪些?
    程序员求职之道(《程序员面试笔试宝典》)之程序员如何保持身心健康?
  • 原文地址:https://www.cnblogs.com/senzhe/p/6420709.html
Copyright © 2011-2022 走看看