日期:2014-05-16  浏览次数:20723 次

同一服务器,MYSQL主从配置。
在一台服务器上安装2个MYSQL服务,配置MYSQL服务的主从管理。
先安装主数据库,然后拷贝主数据库data文件夹里的mysql,performance_schema文件夹进E:/MySqlData/data1(从数据库的数据文件夹)。
(1)修改my.ini文件(主)。
添加
log-bin=E:/MySqlData/mysql-bin #日志文件的位置
server-id=1 #ID标识
binlog-do-db=databaseName #需要同步的数据库
binlog-ignore-db=mysql  #不需要同步的数据库
binlog-ignore-db=test
expire_logs_days=1  #1天时间自动清理二进制日志
innodb_flush_log_at_trx_commit=1 #每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,0的效率最快,2的折中。但是安全性0的最低,详细看文档。在高版本SQL中用配置文件设置无效。只能用语句SET  GLOBAL  innodb_flush_log_at_trx_commit=0,查看用语句SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit%';
sync-binlog=1 #使binlog在每N次binlog写入后与硬盘 同步

port=3306  #主数据库的端口
basedir="D:/java/javasoft/MYSQL/"  #数据库安装路径
datadir="E:/MySqlData/Data/"  #数据库数据目录

修改my1.ini文件(从),此文件新建一个即可。为从MYSQL服务的配置文件。
[client]
port=3307
[mysql]
default-character-set=utf8
[mysqld]
server-id=2
#注意:master-xxx参数在MYSQL5.17以上版本就已经失去了作用,使用此处会出错。而且在从数据库的master.info权限高于配置文件,所以在低版本下也是第一次初始化时使用。
#master-host=127.0.0.1 #主机名
#master-user=XXX #主数据库用户名(添加数据库用户参考下面内容)
#master-password=XXX #主数据库密码
#master-port=3306 #端口
#master-connect-retry=60 #自动连接延时
#master-log-file='mysql-bin.000001' #读取的二进制文件
#master-log-pos=107  #二进制索引位置
replicate-do-db=databaseName #需要备份的数据库名
replicate-ignore-db=mysql #忽略的数据库
replicate-wild-ignore-table=databaseName.temp%    #告诉从服务器线程不要复制更新指定表的任何语句,\转义
replicate-wild-ignore-table=databaseName.t\_temp\_%
replicate-wild-ignore-table=databaseName.tmp\_%
expire_logs_days=1 #二进制日志自动删除的天数
port=3307 #端口和主的不一样
basedir="D:/java/javasoft/MYSQL/"
datadir="E:/MySqlData/data1/"  #数据目录也不一样

default-character-set=utf8 #其他配置
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=100
query_cache_size=13M
table_cache=256
tmp_table_size=15M
thread_cache_size=8

因为在高版本的时候使用master-xxx等选项不可用,所以用 change to master 方法执行:
CHANGE MASTER TO  MASTER_HOST='127.0.0.1',MASTER_USER='XXX',MASTER_PASSWORD='XXX',MASTER_PORT=3306,MASTER_CONNECT_RETRY=60,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107

然后执行在slave端执行:start slave 即可。

在master端执行的部分语句:
show master status //可查看master的二进制文件和索引位置
reset master //重置master

在slave端执行的部分语句:
show slave status //可查看slave的连接状态
start slave //启动slave
reset slave //重置slave
stop slave //停止slave
先停止slave-再重置slave-再启动slave,可以让slave同步master的二进制文件。
更多的主从语句请查看文档!

备注:
添加数据库用户:(更多权限查看文档):
GRANT REPLICATION SLAVE ON *.*   TO '用户名'@'localhost' IDENTIFIED BY '密码'

添加MYSQL服务进windows服务里的dos命令语句:
D:\java\javasoft\MYSQL\bin\mysqld --install serverName  --defaults-file=d:\java\javasoft\MYSQL\my.ini

删除服务的命令:
sc delete serverName

先启动主数据库的服务,再启动从数据库的服务,测试即可。