主服务器配置:
[mysqld]
#mysqld 配置
port=3307
basedir=D:\laravel\mysql2
datadir=D:\laravel\mysql2\data
从服务器的端口部分配置:
[mysqld]
port=3306
basedir="F:/myphp_www/PHPTutorial/MySQL/"
datadir="F:/myphp_www/PHPTutorial/MySQL/data/"
2,在我新配置的主数据库上,需要配置mysql的服务于启动:
首先使用管理员身份运行cmd,跳转到mysql中的bin目录。安装mysql的服务:mysqld install mysql2 --defaults-file="c:\wamp\bin\mysql2\mysql5.6.17\my.ini"
红色字体的mysql2是我配置的环境变量:
启动mysql服务。
net start mysql 启动mysql服务
Net stop mysql 停止mysql服务
3,配置mysql的主从复制,我的这里是端口号为3307的为主数据库,3306的为从数据库,在主数据库上添加主从复制的mysql账号,两个数据库链接的纽扣:
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*
TO mysql_backup@'%'
IDENTIFIED BY '123456';
一个账号为mysql_backup的用户创建成功了,密码为123456
刷新数据库权限:flush privileges;
4,配置主服务器,这里注意两台服务器的server_id不可以一样,现在我的主服务器的配置如下:
[mysqld]
#mysqld 配置
port=3307
basedir=D:\laravel\mysql2
datadir=D:\laravel\mysql2\data
server-id=1
log-bin=mysql-bin#开启了二进制文件
binlog_do_db=follow#主从复制的数据库
binlog_ignore_db=mysql#不参与数从复制的数据库,例如mysql
binlog_checksum=none#mysql主从复制版本高
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
配置完成只好在cmd中重启我的mysql2
navicat中重启master之后并查看master的状态:SHOW MASTER STATUS
重置master:reset master;
5,配置从服务器,
[mysqld]
port=3306
basedir="F:/myphp_www/PHPTutorial/MySQL/"
datadir="F:/myphp_www/PHPTutorial/MySQL/data/"
character-set-server=utf8
default-storage-engine=MyISAM
server_id=2
log-bin=mysql-bin
binlog-do-db=follow#同步的数据库
binlog-ignore-db=mysql#同步的数据库
重启mysql之后通过配置的账号密码链接主数据库,根据master的状态自定:CHANGE MASTER TO master_host = '127.0.0.1',
master_user = 'mysql_backup',
master_password = '123456',
master_log_file = 'mysql-bin.000004',
master_port = 3307;
master_log_pos = 120;
重启slave:START SLAVE
重置slave:RESET SLAVE
查看从数据库的状态:show slave status;
当相应的结果中,slave_IO_Running与slave_SQL_Running两个线程都为Yes时,主从配置成功。
跟本地一样,搭建mysql主从复制,首先需要两台数据库,我是两台服务上直接搭建的mysql主从复制
1,首先在主机上赋予丛机的权限,如果有多台从机的话,就赋予多次:GRANT REPLICATION SLAVE ON *.* TO slave@'118.24.89.47' IDENTIFIED BY '1234';
然后进入数据库执行:select user,host from mysql.user;
可以看到这里给了从机ip为118的一个权限,账号为slave.
2,然后就需要设置主机数据库的my.cnf,设置主机标识的service-id,确保可写的二进制log_bin文件,具体如下:
server_id=1#主机的标识
log-bin=mysql-bin.log#确保可写入的日志文件
binlog_format=mixed#二进制日志的格式,
binlog-do-db=master#允许主从复制数据库
binlog-ignore-db=mysql#不允许主从复制的数据库
~~~~~~~~~~~~~~~~~~~~重新启动mysql服务
3,配置丛机的配置,同样也是在my.cnf的配置文件中,注意service_id不可重复:
server_id=2#主机的标识
log-bin=mysql-bin.log#确保可写入的日志文件
binlog_format=mixed#二进制日志的格式,
replicate_wild_do_table=oldboy.%
replicate_wild_ignore_table=mysql.%
4,给主机的(1)mysql 锁表,(2)查询master的状态,并(3)解锁:
(1)flush tables with read lock;
(2)show master status;(是查看当前bin-log日志的位置点)
file:生成的二进制日志
position:随着bin_log的日志文件更新内容,发生的变化
binlog_do_db:主从复制的数据库
binlog_ignore_db:不允许主从复制的数据库
(3)unlock tables;
5,在从库上链接主数据库,链接数据master_host='是主机的ip' 依次在数据上执行:
stop slave;
change master to master_host='119.27.169.173',master_user='slave',master_password='1234',master_log_file='mysql-bin.000006',master_log_pos=245;
start slave;
6,最后查看slave的状态:show slave status\G;
当Slave_IO_Running和Slave_SQL_Running线程都为yes是主从复制配置成功!