php是最好的语言

lnmp的mysql的主从复制


一,先来看看mysql的多实例,多实例就是一台服务器上同时开启多个不同的服务端口,同时运行多个mysql的服务进程,这些服务进程通过不同的socket监听不同的服务器端口来提供服务。

l的多实例,多实例就是一台服务器上同时开启多个不同的服务端口,同时运行多个mysql的服务进程,这些服务进程通过不同的socket监听不同的服务器端口来提供服务。这个就是觉得数据库太多浪费多弄一个,但是多实例相互之间会有资源共享问题,所以可能会导致速度等问题。

二、主从复制(下面命令会出现随时切换终端就是在mysql命令里执行和linux命令行执行,(linux命令行)表示在命令行模式执行,为了方便可以开两个终端)。配置主数据库的/etc/my.cnf如下

[mysqld]

log-bin=mysql-bin

server-id=1

登录mysql,添加一个账号

grant replication slave on *.* to 'backup'@'192.168.48.130' identified by 'backup';//给从服务器开一个权限

锁表 flush tables with read lock;

查询主数据库状态并记下FILE和Postiton

show master status;

使用mysqldump导出数据库  mysqldum p –uroot –p123456 src >src.sql//这里如果报错就先不输入密码,等提示再输入密码。如果是没有找到mysqldump就自己百度去 (linux命令行)

使用scp 把src.sql转到从数据库(如果没有scp请先安装scp  yum install openssh-clients 从库也要安装不然会报错,最好顺便关了防火墙)scp src.sql  root@192.168.48.130:/root/ 这里会输入一次从数据库服务器密码。(linux命令行)

进行表解锁unlock tables;


切换到从服务器


配置/etc/my.cnf 的

[mysqld]

log-bin=mysql-bin 启动二进制文件

server-id=10 服务器ID 这里不能和主服务器一样

重启mysql,service mysqld restart并登陆mysql(linux命令行)

确认要同步的库名不存在 然后建立数据库

create database src;

把从主服务器传过来的src.sql倒进来

mysql -uroot –p123456 src < src.sql;(linux命令行)

在mysql命令行下执行如下命令

change master to master_host='49.4.142.136',master_user='backup',master_password='backup',master_log_file='mysql-bin.000001',master_log_pos=120;  //每个参数的意思很好理解

启动主从复制功能

start slave;

检查是否主从同步

show slave status\G;

如果看见

Slave_IO_Running:yes

Slave_SQL_Running:yes基本就没问题了 

补充:不能删除关联的二进制日志,不然会出错。每重启一次mysql、flush都会生成一个二进制文件。

作者:xTao 分类:LNMP 浏览:2422 评论:0