码迷,mamicode.com
首页 > 数据库 > 详细

mysql主从配置

时间:2015-07-24 18:45:25      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:mysql主从配置

mysql主从配置

 

replication主从,使两个数据库数据保持一致

A数据变化,产生日志,传送给从BB根据日志做相应变化,使数据与A一致。从而保持AB数据库保持一致

 

 

 

现实中,数据库主从在两台设备上做,现为方便和节省资源,我就在同一台上做了,在两台上做,配置类似

[root@Client ~]# ls /usr/local/

bin/    games/   lib/     sbin/   src/

etc/    include/ libexec/ share/

[root@Client ~]# rm -rf /usr/local/mysql             //如果安装过数据库,先删除原先的

[root@Client ~]# cd /usr/local/src/

[root@Client src]# ls

mysql-5.1.40-linux-i686-icc-glibc23.tar.gz

[root@Client src]# tar zxvfmysql-5.1.40-linux-i686-icc-glibc23.tar.gz

[root@Client src]# mvmysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysql

[root@Client src]# grep "mysql"/etc/passwd

[root@Client src]# useradd -s /sbin/nologinmysql

[root@Client src]# cd /usr/local/mysql/

[root@Client mysql]# ls

[root@Client mysql]# cpsupport-files/my-small.cnf /etc/my.cnf

cp: overwrite `/etc/my.cnf‘? y

[root@Client mysql]# vim /etc/my.cnf

[root@Client mysql]# cpsupport-files/mysql.server /etc/init.d/mysqld

[root@Client mysql]# vim  /etc/init.d/mysqld

basedir=/usr/local/mysql

datadir=/data/mysql

 

 

[root@Client mysql]# rm -rf /data/mysql             //如果之前安装过,存在就删除

[root@Client mysql]#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

[root@Client mysql]# /etc/init.d/mysqldstart

[root@Client mysql]# ps aux |grep mysql

root     3694  0.0  0.1  5060  1344 pts/2    S   21:02   0:00 /bin/sh/usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql--pid-file=/data/mysql/Client.pid

mysql    3793  0.9  1.2 102904 13380 pts/2    Sl  21:02   0:00/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql--user=mysql --log-error=/data/mysql/Client.err--pid-file=/data/mysql/Client.pid --socket=/tmp/mysql.sock --port=3306

 

[root@Client mysql]# netstat -lnp |grep3306

tcp       0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      3793/mysqld

//mysql安装成功,并启动了

 

 

现安装第二个mysql,mysql

[root@Client mysql]# cd ..

[root@Client local]# ls

[root@Client local]# cp -r mysqlmysql_slave

[root@Client local]# cd mysql_slave/

[root@Client mysql_slave]# cp /etc/my.cnf .              //配置文件拷贝到当前目录

[root@Client mysql_slave]# pwd

/usr/local/mysql_slave

[root@Client mysql_slave]# vim my.cnf

[mysqld]

port            = 3307

socket          = /tmp/mysql_slave.sock

datadir         = /data/mysql_slave

 

[root@Client mysql_slave]#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql_slave

[root@Client mysql_slave]# ls/data/mysql_slave/

mysql test

[root@Client mysql_slave]# cd /etc/init.d/

[root@Client init.d]# cp mysqld mysqldslave

basedir=/usr/local/mysql_slave

datadir=/data/mysql_slave

conf=/etc/my.cnf 改成conf=$basedir/my.cnf

[root@Client init.d]#/etc/init.d/mysqldslave start

[root@Client init.d]# ps aux |grep mysql

[root@Client init.d]# netstat -lnp |grepmysql

tcp    0   0 0.0.0.0:3306          0.0.0.0:*            LISTEN      3793/mysqld

tcp    0    0 0.0.0.0:3307        0.0.0.0:*             LISTEN     4105/mysqld

//两个mysql都已启动

 

 

 

 

现在配置主从,主3306,从3307

[root@Client init.d]# cd

[root@Client ~]# mysql                      //如无该命令可用/usr/local/mysql/bin/mysql

-bash: mysql: command not found

[root@Client ~]# /usr/local/mysql/bin/mysql

mysql> quit

Bye

[root@Client ~]# vim /etc/profile.d/path

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

[root@Client ~]# source !$

source /etc/profile.d/path

 

[root@Client ~]# mysql                         //默认登入3306

mysql> quit

[root@Client ~]# mysql -S /tmp/mysql.sock         //登入3306

mysql> quit

[root@Client ~]# mysql -S /tmp/mysql_slave.sock       //登入3307

mysql> quit

[root@Client ~]# mysql -h127.0.0.1 -P3307            //登入指定监听端口的

 

[root@Client ~]# mysql                //登入主的

mysql> create database db1;            //创建一个表

mysql> quit

[root@Client ~]# mysqldump -S/tmp/mysql.sock mysql>123.sql     //拷贝一个库到文件

[root@Client ~]# vim 123.sql                                 //查看

[root@Client ~]# mysql -S /tmp/mysql.sockdb1 <123.sql          //将文件拷贝到库

[root@Client ~]# mysql

mysql> use db1;

mysql> show tables;                                       //库已拷贝

mysql> quit

 

[root@Client ~]# vim /etc/my.cnf

server-id       = 1                           //确保与从上server-id不同

log-bin=wang                                //自定义log-bin

#binlog-do-db=db1,db2               //只针对db1,db2做主从(去掉注释生效)

#binlog-ignore-db=mysql              //无需做主从的库(去掉注释生效)

 

[root@Client ~]# /etc/init.d/mysqld restart

[root@Client ~]# ls /data/mysql

wang.index wang.000001      // log-bin文件

[root@Client ~]# mysql

mysql> grant replication slave on *.* to‘repl‘@‘127.0.0.1‘ identified by ‘123123‘;       

 //设置权限

mysql> flush privileges;                //刷新

mysql> flush tables with read lock;       //锁死,读

mysql> show master status;            //查看

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

| File        | Position | Binlog_Do_DB |Binlog_Ignore_DB |

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

| wang.000001|      315|              |                  |

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

从上:

[root@Client ~]# vim /usr/local/mysql_slave/my.cnf

server-id       = 111                   //设置成与主不同

[root@Client ~]# ls

123.sql

[root@Client ~]# mysql -S/tmp/mysql_slave.sock -e "create database db1";

//从上创建库db1

[root@Client ~]# mysql -S/tmp/mysql_slave.sock db1 <123.sql;

//导入库

[root@Client ~]# mysql -S/tmp/mysql_slave.sock      //登入从

mysql> slave stop;

mysql> change master to master_host=‘127.0.0.1‘,master_port=3306, master_user=‘repl‘, master_password=‘123123‘,master_log_file=‘wang.000001‘, master_log_pos=315;

 

// master_log_file=‘wang.000001‘,master_log_pos=315;值为mysql> show master status;中看到的

 

mysql> slave start;

mysql> show slave status\G;

Slave_IO_Running: No

Slave_SQL_Running: Yes

//两项值都为Yes表示配置成功,现配置还未正确

 

mysql> slave stop;

[root@Client ~]# /etc/init.d/mysqldslaverestart

[root@Client ~]# mysql -S/tmp/mysql_slave.sock

mysql> slave start;

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

//两项都为yes.配置成功了

 

 

验证测试:

主上

[root@Client ~]# mysql

mysql> unlock tables;

mysql> use db1;

mysql> show tables;

help_category

mysql> drop table help_category;          //删除该表

 

 

 

[root@Client ~]# mysql -S/tmp/mysql_slave.sock

mysql> show slave status\G

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

mysql> use db1;

mysql> show tables;

help_category表,主上删除后,从上同步

 

注意:主从机制不能在从上做操作

 

 

主上:

mysql> drop database db1;

mysql> show database;

 

从上:

mysql> show databases;

db1也被删除

 

 

实际现实中,主从很容易出现故障,可监控两个yes的值,判读主从是否正常

 


本文出自 “Linux学习笔记” 博客,请务必保留此出处http://9656134.blog.51cto.com/9646134/1678114

mysql主从配置

标签:mysql主从配置

原文地址:http://9656134.blog.51cto.com/9646134/1678114

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!