mysql 本机自带的,java 本机自带的。 1、登录Master服务器,修改my.cnf,添加如下内容;
server-id = 1 //数据库ID号, 为1时表示为Master,其中master_id必须为1到232–1之间的一个正整数值;
log-bin=mysql-bin //启用二进制日志;
binlog-do-db=data //需要同步的二进制数据库名; (最好不要写,默认就同步所有数据库了)
log=/usr/local/log/mysql.log 日志位置。需要创建目录和改变权限chmod、chown命令
{上边配置主库已经够用了,下边我列出一些东西可以根据自己需要添加
default-storage-engine=innodb –默认的存储引擎,现在Mysql的主打存储引擎
innodb_data_home_dir =/data –innodb的数据家目录
innodb_data_file_path =ibdata1:50M:autoextend –innodb的数据存储文件,当写绝对路径时,innodb_data_home_dir要为空,这样可以指定多个存储文件,使用分号隔开
server-id = 1 –mysql服务器的id号:(1-2^32),id号越小优先级越高
log-bin = /dblog/mysqld-bin –二进制日志
max-binlog-size = 10M –mysqlbinlog的单个文件最大是10M
expire_logs_days = 10 –日志最大存储日期
#logs
slow_query_log = /dblog/slow.log –慢日志,在生产环境一定要记得开启
long_query_time = 2 –定义超过2秒的查询属于慢查询
log-queries-not-using-indexes=1
log-error = /dblog/mysqld.err –错误日志
查询日志不要开,因数据大,影响I/O,排错才使用。
log-bin:每次重启Mysql都会产生一个新的文件
# mkdir /data –建立数据存放目录
# mkdir /dblog –建立日志存放目录
# chmod 700 /data/ /dblog –修改权限
# chown mysql.mysql /data /dblog/ -R
# mysql_install_db –datadir=/data –user=mysql –进行初始化
# service mysql start –启动服务,如出现找不到PID,请检查selinux,iptables是否开启
}
2、建立复制所要使用的用户;
(先说登录,登录不进去就没法授权和建立用户) 本机自带的mysql 登录 第一次没有密码 为空 直接登录就可以
设置密码的命令如下:mysqladmin -uroot -p(旧密码,没有就不写) password 新密码 然后回车
会提示输入密码,不用输入密码,直接回车就可以了,密码就设置了。
3、重启mysql;
service mysqld restart
4 、(如果同步的主库有数据,则需要备份,没有则略过这一步)现在备份Master上的数据;
锁定后我直接tar.gz data这个库文件;
mysql>FLUSH TABLES WITH READ LOCK;
cd /var/lib/mysql
tar data.tar.gz data
接着直接执行了远程scp;
scp ./data.tar.gz root@ip地址:/var/lib/mysql
主库解锁命令是 mysql>unlock tables;
5、授权以后,查看主库状态,
登录mysql 授予登录权限,给远程ip赋予登录权限mysql>grant all privileges on *.* to 'root'@'%'identified by '888888'with grant option;单独给IP赋予远程管理权限是mysql>grant all privileges on *.* to 'root'@'远程的ip'identified by '888888'with grant option;给本地赋予权限是 grant
all privileges on *.* to 'root'@'localhost' identified by 'root' with grant option)
查看状态:mysql>show master status\G
记录pos和第一个文件名称。从库同步需要用(同第9步一样)
查看了主库状态,就不要在主库上做任何操作,否则file拦文件会改变。
6 slave 设置
登录Slave数据库服务器,修改my.cnf;
server-id = 3 //2已经被用在另一个服务器上了,如果以后要再加Slave号接着往后数就OK了;
log-bin=mysql-bin
master-host = 主库ip
master-user = slave
master-password = 888888
master-port = 3306
master-connect-retry=60 //如果发现主服务器断线,重新连接的时间差;
replicate-do-db=data //需要备份的数据库
7 解压刚才从Master scp过来的文件,此处不用改权限、属主,默认没有改变,可以根据实际情况进行修改;
8、上述完成后,可以启动slave了;查看slave状态;
mysql>slave start; mysql>show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.0.1 Master_User: test Master_Port: 3306 Connect_Retry: 60 Master_Log_File: updatelog.000001 Read_Master_Log_Pos: 106 Relay_Log_File: onlinevc-relay-bin.000013 Relay_Log_Pos: 1069 Relay_Master_Log_File: updatelog.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: data 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: 106 Relay_Log_Space: 1681 Until_Condition: None