若出现 Service successfully installed,则服务安装成功;若出现install remove of the service denied,只需要打开cmd时
以管理员身份打开即可解决()!
若出现 Service successfully installed,则服务安装成功;若出现install remove of the service denied,只需要打开cmd时
以管理员身份打开即可解决!
参考:http://blog.chinaunix.net/uid-77311-id-3450734.html
----------------------------------------------------------------------
转自:http://www.cnblogs.com/yuechaotian/archive/2013/05/15/3080056.html
1、首先要在本地建立两个mysql服务(首先正常使用安装包安装第一个,第二个使用免安装版,参考这里),指定不同的端口。我
这里一个主(3306),一个从(3307)。
2、然后修改主配置文件:
[mysqld]
server-id = 1
binlog-do-db=test #要同步的数据库
#binlog-ignore-db=mysql #不同步的数据库,如果指定了binlog-do-db这里应该可以不用指定的
log-bin=mysql-bin #要生成的二进制日记文件名称
修改从配置文件:
[mysqld]
server-id = 2
log-bin = mysql-bin
replicate-do-db=test
3、在主库添加一个用户 repl 并指定replication权限
create user 'repl'@'127.0.0.1' identified by 'asdf';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'127.0.0.1'; -- --这里我指定数据库(test.*)时报错,而指定全库(*.*)时会成功。
4、保持主从mysql的test数据库初始状态一致。
一般是先将所有的表加读锁,然后copy磁盘上的数据库文件夹。我这里直接停止服务,然后将数据文件拷贝过去。
5、在主数据库里面运行show master status;记下file和position字段对应的参数。
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | test | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
6、在从库设置它的master:
mysql> change master to
master_host='127.0.0.1',master_port=3306,master_user='repl',master_password='asdf',master_log_file='mysql-
bin.000001',master_log_pos=107;
Query OK, 0 rows affected (0.19 sec)
这里的master_log_file和master_log_pos对应刚才show master status记下的参数。
7、在从库开启从数据库复制功能。
slave start;
mysql> slave start;
Query OK, 0 rows affected (0.00 sec)
在从库可以通过show slave status来查看一些参数。
8. 此时在主库创建表或插入数据,在从库就会很快也能看到了。
-- 主库
mysql> create table tianyc_02(b int);
Query OK, 0 rows affected (0.16 sec)
mysql> insert into tianyc_02 values(2013);
Query OK, 1 row affected (0.13 sec)
-- 从库
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| tianyc_01 |
| tianyc_02 |
+----------------+
2 rows in set (0.00 sec)
mysql> select * from tianyc_02;
+------+
| b |
+------+
| 2013 |
+------+
1 row in set (0.00 sec)
同理,可以搭建第二、第三个从节点。
备注:两个服务的serve_id必须不同,否则在开启复制功能时会提示错误
mysql> slave start;
ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO
我这里设置的主节点id为1,从节点id为2。也可以按照ip或端口进行设置,好用来区分。
注意:
* 主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。
* 如果主从的网络断开,从会在网络正常后,批量同步。
* 如果对从进行修改数据,那么很可能从在执行主的bin-log时出现错误而停止同步,这个是很危险的操作。所以一般情况
下,非常小心的修改从上的数据。
参考:http://bbs.chinaunix.net/thread-2297959-1-1.html
-------------------------------------------------------------
注意:mysql主从复制,主从版本要一致!正常情况下,主从mysql应该安装在两台服务器上
mysql官网:http://dev.mysql.com/downloads/mysql/
这里会有msi格式的和zip格式,msi格式的需要点击安装,这里不讲这个,接下来讲的是zip格式。
解压 zip 压缩文件,得到 一个文件夹 ,将其拷贝到你想要放的目录(比如我是放在D:/tools/mysql下
复制两份),然后分别将文件夹重命名为 mysql1 和 mysql2 。
找到mysql1的配置文件模板D:\tools\mysql\mysql1 目录下的 my-default.ini,重命名为 my.ini,在 [mysqld] 标签下添加如下代码:
[mysqld]
basedir = D:\tools\mysql\mysql1
datadir = D:\tools\mysql\mysql1\data
binlog-do-db=test
binlog-ignore-db=mysql
log-bin=mysql-bin
注:
binlog-do-db=test 表示需要备份的数据库为test
*binlog-ignore-db=mysql 表示不需要备份的数据库为mysql
如果两个都不设的话,从服务器会复制主服务器的全部数据库
log-bin=mysql-bin 表示开启二进制日志,并把二进制日志前缀改为mysql-bin
其他的不用修改保存my.ini文件,然后以管理员的身份运行cmd,将工作目录切换到D:\tools\mysql\mysql1\bin下,运行
mysqld -install
如果提示“Service successfully installed”,则说明mysql服务安装成功,默认的服务名称为MySQL,端口号为3306,密码默认为空
连接mysql主服务器
mysql -uroot -p -P3306
然后创建新用户:
create user 'mytest'@'127.0.0.1' identified by '123456';
注:
@后面的ip地址为允许连接的客户端的ip地址。mytest是用户名,123456是密码
然后,给新用户配置主从复制的权限:
grant replication slave on *.* to 'mytest'@'127.0.0.1' identified by '123456';
注:
@后面的ip地址为允许连接的客户端的ip地址,如果改为 ‘%’,就表示客户端没有ip地址的限制
然后查看主服务master的状态:
mysql> show master status;
+——————+———-+————–+——————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+——————+———-+————–+——————+——————-+
| mysql-bin.000003 | 106 | test | mysql | |
+——————+———-+————–+——————+——————-+
注意:
记住file,和position,因为等下配置从数据库的时候会用到
找到mysql2的配置文件模板D:\tools\mysql\mysql2 目录下的 my-default.ini,重命名为 my.ini,并修改如下这几项:
[client]
port = 3307
[mysqld]
port= 3307
basedir=D:\tools\mysql\mysql2
datadir=D:\tools\mysql\mysql2\data
server-id = 2
保存my.ini后,用 管理员身份 运行cmd,并切换到D:\tools\mysql\mysql2\bin目录下,运行
mysqld install MySQL2 --defaults-file="D:\tools\mysql\mysql2\my.ini"
如果提示“Service successfully installed”则说明安装成功了,这时候我们连接从myslq
mysql -uroot -p -P3307
配置复制的参数:
change master to master_host=’127.0.0.1’,master_user=’mytest’,master_password=’123456’,master_port=3306,master_log_file=’mysql-bin.000003’,master_log_pos=106;
参数详解:
master_host: 主服务器的IP
master_user: 主服务器上新创建的用户名
master_password: 用户的密码
master_port: 主服务器的端口,如果未曾修改,默认即可。
master_log_file: 主服务器二进制日志文件的名称,填写查看主服务器的master状态时显示的File的值
master_log_pos: 日志的位置,填写查看主服务器的master状态时显示的Position的值
启动从服务的slave复制功能:
start slave;
查看从服务器的slave状态:
show slave status \G
***************** 1. row *****************
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: mytest
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 106
Relay_Log_File: DESKTOP-DMGAKUM-relay-bin.000002
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
如果 Slave_IO_Running 和 Slave_SQL_Running 的值都为 Yes,则说明主从复制的所有配置已成功,即从服务器已经可以自动与主服务器的数据库数据实现同步了。
此后,只要主服务器的数据有更新(比如:在 test数据库中新建了一张表或者表中的数据发生了变化),从服务器都会自动与主服务器保持一致。但如果有人刻意改变了从服务器的数据,主服务器中的数据并不会同步更新,除非我们把这两个MySQL服务器设置为互为主从。
注:
如果有任一个显示NO,则证明同步有问题。可以查看数据库日志文件,里面基本上会显示出错误之处,根据错误一步一步排查,基本上都可以解决的。数据库日志在data目录下,错误日志的后缀是.err
--------------------------------------------------------------------------------------------------
如果启动服务的时候提示:
去查看 .err文件,查看报错情况,如果出现:mysqld: Table 'mysql.plugin' doesn't exist windows
如果出现这个错误,需要把 先安装的 C:\ProgramData\MySQL\MySQL Server 5.7\Data\mysql 文件夹 拷贝到
E:\MySQL2\MySQL Server 5.7\Data ,然后重新启动,ok了
出现问题1:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
解决问题1:
方法一:
root密码为空时用下面命令修改, 修改成123456:
mysqladmin -u root -p password 123456
重新登录
mysql -uroot -p -P3306
ok!
问题2:
mysql> create user 'mytest'@'127.0.0.1' identified by '123456';
出现如下错误:
ERROR 1396 (HY000): Operation CREATE USER failed for 'mytest'@'127.0.0.1'
解决办法:
先删除,然后在重新创建
drop user 'mytest'@'127.0.0.1';
create user 'mytest'@'127.0.0.1' identified by '123456';