时间:2021-07-01 10:21:17 帮助过:8人阅读
这里就详解,请度娘。
二、配置MySQL主服务器(10.241.226.110)
mysql -uroot -p #进入MySQL控制台
create database testdb; #建立数据库testdb
#授权用户mysqlcopy只能从10.241.226.111这个IP访问主服务器10.241.226.110上面的数据库,并且只具有数据库备份的权限
grant replication slave on *.* to 'mysqlcopy'@'10.241.226.111' identified by '123456' with grant option;
三、把MySQL主服务器10.241.226.110中的数据库testdb导入到MySQL从服务器10.241.226.111中
1、导出数据库testdb
mysqldump -u root -p testdb> /home/testdbbak.sql
备注:在导出之前可以先进入MySQL控制台执行下面命令
flush tables with read lock; #数据库只读锁定命令,防止导出数据库的时候有数据写入
unlock tables; #解除锁定
2、导入数据库到MySQL从服务器
mysql -u root -p #进入从服务器MySQL控制台
create databasetestdb; #创建数据库
usetestdb #进入数据库
source /home/testdbbak.sql #导入备份文件到数据库
mysql -u mysqlcopy-h10.241.226.110 -p #测试在从服务器上登录到主服务器
四、配置MySQL主服务器的my.cnf文件
1、vim /etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容
log_bin=mysql-bin #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。 binlog-do-db=testdb #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行 binlog-ignore-db=mysql #不同步mysql系统数据库 server_id = 1 #设置服务器id,为1表示主服务器,注意:如果原来的配置文件中已经有这一行,就不用再添加了。 socket =/var/lib/mysql/mysql.sock character-set-server=utf8
注意:这里记住File的值:mysql-bin.000001和Position的值:120,后面会用到。
五、配置MySQL从服务器的my.cnf文件
1、vi /etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容
log_bin=mysql-bin #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。 replicate-do-db=testdb replicate-ignore-db=mysql read_only=1 server_id = 2 #配置文件中已经有一行server-id=1,修改其值为2,表示为从数据库 socket = /var/lib/mysql/mysql.sock character-set-server=utf8
2、service mysqld restart #重启MySQL
3、mysql -u root -p #进入MySQL控制台
4、slave stop; #停止slave同步进程
5、change master to master_host='10.241.226.110',master_user='mysqlcopy',master_password='123456',master_log_file='mysql-bin.000001,master_log_pos=120; #执行同步语句
6、slave start; #开启slave同步进程
7、SHOW SLAVE STATUS\G #查看slave同步信息,部分内容如下:
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.241.226.111 Master_User: mysqlcopy Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 377 Relay_Log_File: localhost-relay-bin.000003 Relay_Log_Pos: 540 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: DB_CLOUDCORE Replicate_Ignore_DB: mysql Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 377 Relay_Log_Space: 717 Until_Condition: None Until_Log_File:
注意查看:
以上这两个参数的值为Yes,即说明配置成功!
六、测试MySQL主从服务器双机热备是否成功
1、进入MySQL主服务器
mysql -u root -p #进入主服务器MySQL控制台
use testdb; #进入数据库
CREATE TABLE test ( id int not null); #创建test表
2、进入MySQL从服务器
mysql -u root -p #进入MySQL控制台
usetestdb; #进入数据库
show tables;
会看到有一个新建的表test,表示数据库同步成功
问题:
1、ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
解:由于mysql 默认的mysql.sock 是在/var/lib/mysql/mysql.sock,但linux系统总是去/tmp/mysql.sock查找,所以会报错
为mysql.sock增加软连接(相当于windows中的快捷方式)。
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock