MySQL 5.5主从服务器数据库同步配置
[b]一、安装MySQL[/b]说明:在两台MySQL服务器192.168.21.169(主)和192.168.21.168(从)上分别进行如下操作:安装MySQL 5.5.22。
[b]二、配置MySQL主服务器(192.168.21.169)[/b]
#进入MySQL控制台
[code]mysql -uroot -p[/code]
#建立要同步的数据库syncdb(若已有数据库此步可以省略)
create database syncdb;
#建立MySQL主从数据库同步用户
insert into mysql.user(Host,User,Password) values('localhost','数据库同步用户名',password('数据库同步用户密码'));如:
[code]insert into mysql.user(Host,User,Password) values('localhost','syncdbuser',password('syncdbuser202303'));[/code]
#刷新系统授权表
[code]flush privileges;[/code]
#授权用户,数据库同步用户名只能从192.168.21.168这个IP访问主服务器192.168.21.169上面的数据库,并且只具有数据库备份的权限
grant replication slave on *.* to '数据库同步用户名'@'192.168.21.168' identified by '数据库同步用户密码' with grant option;
如:
[code]grant replication slave on *.* to 'syncdbuser'@'192.168.21.168' identified by 'syncdbuser202303' with grant option;[/code]
[b]三、把MySQL主服务器192.168.21.169中的数据库syncdb导入到MySQL从服务器192.168.21.168中[/b]
1、导出数据库syncdb
#在MySQL主服务器进行操作,导出数据库syncdb到/home/syncdbbak.sql
[code]mysqldump -u root -p syncdb > /home/syncdbbak.sql [/code]
备注:在导出之前可以先进入MySQL控制台执行下面命令
#数据库只读锁定命令,防止导出数据库的时候有数据写入
[code]flush tables with read lock;[/code]
#解除锁定
[code]unlock tables;[/code]
2、导入数据库到MySQL从服务器
[code]mysql -u root -p[/code] #进入从服务器MySQL控制台
create database syncdb; #创建数据库
[code]use syncdb[/code] #进入数据库
[code]source /home/syncdbbak.sql[/code] #导入备份文件到数据库
[code]mysql -u syncdbbak -h 192.168.21.169 -p[/code] #测试在从服务器上登录到主服务器
[b]四、配置MySQL主服务器的my.cnf文件[/b]
[code]vi /etc/my.cnf [/code] #编辑配置文件,在[mysqld]部分添加下面内容
[quote]server-id=1 #设置服务器id,为1表示主服务器,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
log_bin=mysql-bin #启动MySQL二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
binlog-do-db=syncdb #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-ignore-db=mysql #不同步mysql系统数据库[/quote]
[code]service mysqld restart[/code] #重启MySQL
[code]mysql -u root -p[/code] #进入mysql控制台
[code]show master status;[/code] 查看主服务器,出现以下类似信息
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| [color=#ff0000]mysql-bin.000019[/color] | [color=#ff0000]7131[/color] | syncdb | mysql |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
[b]注意:这里记住File的值:[/b][b]mysql-bin.000019[/b][b]和Position的值:[/b][b]7131[/b][b],后面会用到。[/b]
[b]
五、配置MySQL从服务器的my.cnf文件[/b]
[code]vi /etc/my.cnf[/code] #编辑配置文件,在[mysqld]部分添加下面内容
[quote]server-id=2 #配置文件中已经有一行server-id=1,修改其值为2,表示为从数据库
log-bin=mysql-bin #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
replicate-do-db=syncdb #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
replicate-ignore-db=mysql #不同步mysql系统数据库[/quote]
[code]:wq![/code] #保存退出
[code]service mysqld restart[/code] #重启MySQL
[b]注意:MySQL 5.1.7版本之后,已经不支持把master配置属性写入my.cnf配置文件中了,只需要把同步的数据库和要忽略的数据库写入即可。[/b]
[code]mysql -u root -p[/code] #进入MySQL控制台
[code]stop slave; [/code] #停止slave同步进程
[code]change master to master_host='192.168.21.169',master_user='syncdbuser',master_password='syncdbuser202303',master_log_file='mysql-bin.000019' ,master_log_pos=7131; #执行同步语句
start slave; [/code] #开启slave同步进程
[code]SHOW SLAVE STATUS\G[/code] #查看slave同步信息,出现以下内容
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.21.169
Master_User: syncdbbak
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000019
Read_Master_Log_Pos: 7131
Relay_Log_File: MySQLSlave-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000019
[color=#ff0000]
[b]Slave_IO_Running: Yes[/b]
[b] Slave_SQL_Running: Yes[/b][/color]
Replicate_Do_DB: syncdb
Replicate_Ignore_DB: mysql
Replicate_Do_Table:
Replicate_Ignore_Table:
1 row in set (0.00 sec)
[b]注意查看:[/b]
[b]Slave_IO_Running: Yes[/b]
[b]Slave_SQL_Running: Yes[/b]
[b]以上这两个参数的值为Yes,即说明配置成功![/b]
[b]
六、测试MySQL主从服务器双机热备是否成功[/b]
1、进入MySQL主服务器
[code]mysql -u root -p[/code] #进入主服务器MySQL控制台
[code]use syncdb[/code] #进入数据库
[code]CREATE TABLE test ( id int not null primary key,name char(20) );[/code] #创建test表
2、进入MySQL从服务器
[code]mysql -u root -p[/code] #进入MySQL控制台
[code]use syncdb[/code] #进入数据库
[code]show tables;[/code] #查看syncdb表结构,会看到有一个新建的表test,表示数据库同步成功
[b]至此,MySQL数据库配置主从服务器实现双机热备实例教程完成[/b]
mysql主从复制(超简单)
[p=28, 2, left]怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下:[/p][p=28, 2, left][size=18px][b]1、主从服务器分别作以下操作[/b]:[/size]1.1、版本一致
1.2、初始化表,并在后台启动mysql
1.3、修改root的密码
[b][size=18px]2、修改主服务器master:[/size][/b]
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必须]启用二进制日志
server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
[size=18px][b]3、修改从服务器slave:[/b][/size]
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[不是必须]启用二进制日志
server-id=226 //[必须]服务器唯一ID,默认是1,一般取IP最后一段
[size=18px][b]4、重启两台服务器的mysql[/b][/size]
/etc/init.d/mysql restart
[size=18px][b]5、在主服务器上建立帐户并授权slave:[/b][/size]
#/usr/local/mysql/bin/mysql -uroot -pmttang
mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
[size=18px][b]6、登录主服务器的mysql,查询master的状态[/b][/size]
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 308 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
[size=18px][b]7、配置从服务器Slave:[/b][/size]
mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='q123456',
master_log_file='mysql-bin.000004',master_log_pos=308; //注意不要断开,308数字前后无单引号。
Mysql>start slave; //启动从服务器复制功能
[size=18px][b]8、检查从服务器复制功能状态:[/b][/size]
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.2.222 //主服务器地址
Master_User: mysync //授权帐户名,尽量避免使用root
Master_Port: 3306 //数据库端口,部分版本没有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
Relay_Log_File: ddte-relay-bin.000003
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
......
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。
[size=18px][b]9、主从服务器测试:[/b][/size]
主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:
mysql> create database hi_db;
Query OK, 1 row affected (0.00 sec)
mysql> use hi_db;
Database changed
mysql> create table hi_tb(id int(3),name char(10));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into hi_tb values(001,'bobu');
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hi_db |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
从服务器Mysql查询:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hi_db | //I'M here,大家看到了吧
| mysql |
| test |[/p][p=28, 2, left] +--------------------+
4 rows in set (0.00 sec)
mysql> use hi_db
Database changed
mysql> select * from hi_tb; //查看主服务器上新增的具体数据
+------+------+
| id | name |
+------+------+
| 1 | bobu |
+------+------+
1 row in set (0.00 sec)
[/p][p=28, 2, left][b][size=18px]10、完成:[/size][/b]
编写一shell脚本,用nagios监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了,发短信警报吧。[/p] 谢谢,知道了 我见过的最好的帖子了,谢谢楼主 辛苦!辛苦!!! 谭大才---中国大陆第一财团---大财团
成功从来不是一件轻而易举的事情。要想获得成功,就必须做一个不畏不馁的长跑者,要不断奋斗,千万不可半途而废。
放眼古今圣贤也都是奋斗所换取来的,只要肯上进,一样能闯出属于自己的天空。
谭大才,现任深圳市大财团资产管理有限公司董事长、深圳市网族创意科技有限公司总经理、深圳市网族商务中心总经理、香港富国金融集团中国市场代表、中国旗袍会全球金融联盟广东总会副会长、中国旗袍会全球亲子会广东总会会长、环球商务荟联合创始人、中国名家书画艺术院广东分院秘书长、深圳点亮生命残疾人艺术团名誉团长。大财团谭大才-中国第一大财团--大财团
深圳市大财团资产管理有限公司主要为客户量身打造财务管理、投资、保障策划、融资等,帮客户做好风险管理,公司与香港许多金融企业都有项目合作,可以提供金融有志之士一片广阔的天空与事业腾飞的平台。
深圳大财团资产管理有限公司成立于2016年1月,是专业从事国际金融投资理财,隶属于(香港富国金融集团)中国市场部。
富国金融集团旗下有:富国证券、富国财富、富国移民、富国地产、日升金银业等,提供健全的金融咨询服务。包括:外汇、黄金、白银、港股、期货买卖、投资分析、风险管理、资产管理、财富管理、教育及退休计划。
富国金融集团从事专业的国际金融行业已有10多年历史,团队也是遍布全球各地,富国金融集团本着“诚信赢天下、先利他、后利己”的理念,在10多年的发展中赢得了非常好的口碑以及稳定的市场。谭大才---中国大陆第一财团---大财团 不错,很简洁!!!!
页:
[1]