mysql5.1 主从 配置

   由于项目以后可能会用到关于数据库备份,主要是用主从复制,来实现数据库的读写分离等功能。在这几天对mysql 的主从配置研究了下,我在电脑上配置了两个mysql 数据,配置还真有点麻烦。。关键还是对mysql 的数据库的了解不够,导致的,闲话不说了,现在开始配置。。

 

1.首先在本机(Windows)上配置两个数据库。

   我下载的是mysql 的noinstall 版本的,安装版的好像要折腾一番,好麻烦,试了下,觉得不爽,就下载免安装版的了。

   下载好以后,修改下mysql 的配置文件,把my-small.ini 复制下,改成my.ini,默认端口是3306,就不修改了。然后要开启服务,然后启动服务。开始用cmd 来写命令,后来觉得老是这样太麻烦了,又看了下bat 的语法。随便写了几个简单的bat 脚本。。在调试过程中方便好多。。把这些保存后放在解压后的mysql 根目录下。

 

 (1)安装mysql1 服务

@echo off

bin\mysqld.exe --install mysql1 --defaults-file="D:\mysql5.1\mysql1\my.ini"

PAUSE
 

(2)移除mysql1 服务

@echo off
bin\mysqld.exe --remove  mysql1
PAUSE

 

(3)启动mysql1服务

@echo off
net start mysql1
PAUSE
 

(4)停止mysql 1服务

@echo off
net stop mysql1
PAUSE

 

第二个mysql 的也一样,不过要注意的是,服务名要不一样才行。我起的名是mysql2,而且my.ini 的端口也要不同,我的是3307.

 

ps:我的两个mysql 是完全隔离的,完全复制两个免安装版本,好像说一个免安装文件就行了,配置路径不同就行了。

 

遇到问题:在mysql 启动的过程中,遇到了1067 的错误码提示。。我的解决方案是配置下my.ini 增加下面几项,然后重启服务,解决问题。

[mysqld]
#设置basedir指向mysql的安装路径
basedir=D:\mysql5.1\mysql1
datadir=D:\mysql5.1\mysql1\data

还遇到个问题是,初始帐号密码的修改。。可以用cmd 命令行修改。

c:/mysql/mysql1/bin> mysqladmin -u root password newpass
 

   上面在同一台机上安装好了两个mysql 的数据库了。 下面开始配置主从。。

 

2.mysql数据库主从配置

 

(1)master 配置

 

首先,为了复制的安全性,给slave 个专门创建个复制mysql 的帐号,并赋予权限。

CREATE USER 'repl'@'localhost' IDENTIFIED BY 'root';

GRANT REPLICATION ON *.*  TO 'repl'@'localhost'

 接下来,配置my.ini

 

#数据库主从配置开始
#本机数据库ID 标示为主 
server-id	= 1

#二进制需要同步的数据库名
binlog-do-db=yyweb

# Uncomment the following if you want to log updates
#启动二进制日志系统
log-bin=mysql-bin

#数据库主从配置结束
 

然后重启下mysql1 的服务。然后进入mysql 命令行,输入以下命令查看状态。

mysql> show master status\G
*************************** 1. row **************************
            File: mysql-bin.000002
        Position: 671
    Binlog_Do_DB: yyweb
Binlog_Ignore_DB:
1 row in set (0.00 sec)

 

(2)slave 配置

    首先,配置my.ini

 

server-id = 2
#从服务器ID号,不要和主ID相同
master-host =127.0.0.1
#指定主服务器IP地址
master-user =repl
#制定在主服务器上可以进行同步的用户名
master-password =root
#密码
master-port =3306
#同步所用的端口
master-connect-retry=60
#断点重新连接时间
replicate-ignore-db=mysql
#屏蔽对mysql库的同步
replicate-do-db=yyweb
#同步数据库名称 

  然后重启下mysql2 的服务。然后进入mysql 命令行,输入以下命令查看状态。

mysql> show slave status

 如果成功的话,可以查看到其中的两列

SLAVE_IO_RUNNING:YES

SLAVE_SQL_RUNNING:YES

如有其中有一列为NO,说明是连接不成功的。则检查下my.ini 的配置。

 

以下是成功连接后,在master 添加数据后,slave 的状态

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 127.0.0.1
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 671
               Relay_Log_File: trye-relay-bin.000008
                Relay_Log_Pos: 816
        Relay_Master_Log_File: mysql-bin.000002
·········以下省略

 

遇到问题:开始的时候把master 的用户名密码写错了,查看slave 的状态的时候老是SLAVE_SQL_RUNNING:NO,经过一段时间检查,发现mysql 的日志这东西还真不错。。哈哈。。mysql 的日志文件在data 下面非文件夹。。一个个查看便是。。其中有一个master.info 的文件,记录了该主服务器的信息,还有一些错误日志等,如果有错误信息可以很清楚的看到。

 

   mysql 主从配置完毕,总结一点是,对mysql 的配置文件不熟,以上也是参考网上进行配置的,所以有写具体的问题,未能清楚说明,还有待深入了解mysql 的官方文档。。

 

 

 

 

你可能感兴趣的:(数据库方面,MySQL,SQL,Server,SQL,.net,脚本)