设为首页 收藏本站
查看: 504|回复: 0

[经验分享] mysql主从配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-27 09:27:30 | 显示全部楼层 |阅读模式
mysql主从配置

replication主从,使两个数据库数据保持一致
主A数据变化,产生日志,传送给从B,B根据日志做相应变化,使数据与A一致。从而保持A、B数据库保持一致



现实中,数据库主从在两台设备上做,现为方便和节省资源,我就在同一台上做了,在两台上做,配置类似
[iyunv@Client ~]# ls /usr/local/
bin/    games/   lib/     sbin/   src/
etc/    include/ libexec/ share/
[iyunv@Client ~]# rm -rf /usr/local/mysql             //如果安装过数据库,先删除原先的
[iyunv@Client ~]# cd /usr/local/src/
[iyunv@Client src]# ls
mysql-5.1.40-linux-i686-icc-glibc23.tar.gz
[iyunv@Client src]# tar zxvfmysql-5.1.40-linux-i686-icc-glibc23.tar.gz
[iyunv@Client src]# mvmysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysql
[iyunv@Client src]# grep "mysql"/etc/passwd
[iyunv@Client src]# useradd -s /sbin/nologinmysql
[iyunv@Client src]# cd /usr/local/mysql/
[iyunv@Client mysql]# ls
[iyunv@Client mysql]# cpsupport-files/my-small.cnf /etc/my.cnf
cp: overwrite `/etc/my.cnf'? y
[iyunv@Client mysql]# vim /etc/my.cnf
[iyunv@Client mysql]# cpsupport-files/mysql.server /etc/init.d/mysqld
[iyunv@Client mysql]# vim  /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql


[iyunv@Client mysql]# rm -rf /data/mysql             //如果之前安装过,存在就删除
[iyunv@Client mysql]#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
[iyunv@Client mysql]# /etc/init.d/mysqldstart
[iyunv@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

[iyunv@Client mysql]# netstat -lnp |grep3306
tcp       0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      3793/mysqld
//主mysql安装成功,并启动了


现安装第二个mysql,从mysql。
[iyunv@Client mysql]# cd ..
[iyunv@Client local]# ls
[iyunv@Client local]# cp -r mysqlmysql_slave
[iyunv@Client local]# cd mysql_slave/
[iyunv@Client mysql_slave]# cp /etc/my.cnf .              //配置文件拷贝到当前目录
[iyunv@Client mysql_slave]# pwd
/usr/local/mysql_slave
[iyunv@Client mysql_slave]# vim my.cnf
[mysqld]
port            = 3307
socket          = /tmp/mysql_slave.sock
datadir         = /data/mysql_slave

[iyunv@Client mysql_slave]#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql_slave
[iyunv@Client mysql_slave]# ls/data/mysql_slave/
mysql test
[iyunv@Client mysql_slave]# cd /etc/init.d/
[iyunv@Client init.d]# cp mysqld mysqldslave
basedir=/usr/local/mysql_slave
datadir=/data/mysql_slave
conf=/etc/my.cnf 改成conf=$basedir/my.cnf
[iyunv@Client init.d]#/etc/init.d/mysqldslave start
[iyunv@Client init.d]# ps aux |grep mysql
[iyunv@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
[iyunv@Client init.d]# cd
[iyunv@Client ~]# mysql                      //如无该命令可用/usr/local/mysql/bin/mysql
-bash: mysql: command not found
[iyunv@Client ~]# /usr/local/mysql/bin/mysql
mysql> quit
Bye
[iyunv@Client ~]# vim /etc/profile.d/path
export PATH=$PATH:/usr/local/mysql/bin
[iyunv@Client ~]# source !$
source /etc/profile.d/path

[iyunv@Client ~]# mysql                         //默认登入3306的
mysql> quit
[iyunv@Client ~]# mysql -S /tmp/mysql.sock         //登入3306的
mysql> quit
[iyunv@Client ~]# mysql -S /tmp/mysql_slave.sock       //登入3307的
mysql> quit
[iyunv@Client ~]# mysql -h127.0.0.1 -P3307            //登入指定监听端口的

[iyunv@Client ~]# mysql                //登入主的
mysql> create database db1;            //创建一个表
mysql> quit
[iyunv@Client ~]# mysqldump -S/tmp/mysql.sock mysql>123.sql     //拷贝一个库到文件
[iyunv@Client ~]# vim 123.sql                                 //查看
[iyunv@Client ~]# mysql -S /tmp/mysql.sockdb1 <123.sql          //将文件拷贝到库
[iyunv@Client ~]# mysql
mysql> use db1;
mysql> show tables;                                       //库已拷贝
mysql> quit

[iyunv@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              //无需做主从的库(去掉注释生效)

[iyunv@Client ~]# /etc/init.d/mysqld restart
[iyunv@Client ~]# ls /data/mysql
wang.index wang.000001      // log-bin文件
[iyunv@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|              |                  |
+-------------+----------+--------------+------------------+
从上:
[iyunv@Client ~]# vim /usr/local/mysql_slave/my.cnf
server-id       = 111                   //设置成与主不同
[iyunv@Client ~]# ls
123.sql
[iyunv@Client ~]# mysql -S/tmp/mysql_slave.sock -e "create database db1";
//从上创建库db1
[iyunv@Client ~]# mysql -S/tmp/mysql_slave.sock db1 <123.sql;
//导入库
[iyunv@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;
[iyunv@Client ~]# /etc/init.d/mysqldslaverestart
[iyunv@Client ~]# mysql -S/tmp/mysql_slave.sock
mysql> slave start;
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
//两项都为yes.配置成功了


验证测试:
主上
[iyunv@Client ~]# mysql
mysql> unlock tables;
mysql> use db1;
mysql> show tables;
help_category
mysql> drop table help_category;          //删除该表



[iyunv@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的值,判读主从是否正常



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-91049-1-1.html 上篇帖子: mysql 问题解决 下篇帖子: Mysql高可用(drbd+heartbeat+mysql) mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表