如何使用 Windows 服务从主数据库自动重新同步从数据库?
How to Resync the Slave database automatically from Master database using a Windows Service?
我正在编写一个 Windows 服务程序来不断地从主数据库同步本地从数据库。我有一个名为 nsbm_syncdb
的主数据库。如果我想同步从数据库,我必须编写以下查询。
CHANGE MASTER TO
MASTER_HOST='192.168.1.1',
MASTER_USER='nsbm_root',
MASTER_PASSWORD='1234',
MASTER_LOG_FILE='mysql-bin.0000xx',
MASTER_LOG_POS=234;
对于上面的代码,我应该通过输入查询 "SHOW MASTER STATUS"
从 Master 数据库中获取 MASTER_LOG_FILE
和 MASTER_LOG_POS
的值。
如何使用 MySql 查询从 Master 数据库中检索日志位置和日志文件名?
我浏览了互联网,但还没有找到查询。
您可以使用带有 --master-data=2 选项的 mysqldump
程序(随 MySQL 提供)。
这会将完整的 CHANGE MASTER ...
命令写入输出。
我们可以在 windows 服务程序中编写 C# 代码来访问 SHOW MASTER STATUS
table 的值。
它不是现有的 table。所以我们必须创建一个 DataTable
并将 SHOW MASTER STATUS
的详细信息填入其中。
string master_log_file = null;
long master_log_pos = 0;
using (MySqlConnection con = new MySqlConnection(conStrM))
{
using (MySqlCommand cmd = new MySqlCommand("SHOW MASTER STATUS", con))
{
cmd.CommandType = CommandType.Text;
using (MySqlDataAdapter sda = new MySqlDataAdapter(cmd))
{
if (sda != null)
{
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
foreach (DataRow row in dt.Rows)
{
master_log_file = row["File"].ToString();
master_log_pos = Convert.ToInt64(row["Position"]);
}
}
}
}
}
}
从上面的代码我们可以得到master_log_file
和master_log_pos
。
我正在编写一个 Windows 服务程序来不断地从主数据库同步本地从数据库。我有一个名为 nsbm_syncdb
的主数据库。如果我想同步从数据库,我必须编写以下查询。
CHANGE MASTER TO
MASTER_HOST='192.168.1.1',
MASTER_USER='nsbm_root',
MASTER_PASSWORD='1234',
MASTER_LOG_FILE='mysql-bin.0000xx',
MASTER_LOG_POS=234;
对于上面的代码,我应该通过输入查询 "SHOW MASTER STATUS"
从 Master 数据库中获取 MASTER_LOG_FILE
和 MASTER_LOG_POS
的值。
如何使用 MySql 查询从 Master 数据库中检索日志位置和日志文件名?
我浏览了互联网,但还没有找到查询。
您可以使用带有 --master-data=2 选项的 mysqldump
程序(随 MySQL 提供)。
这会将完整的 CHANGE MASTER ...
命令写入输出。
我们可以在 windows 服务程序中编写 C# 代码来访问 SHOW MASTER STATUS
table 的值。
它不是现有的 table。所以我们必须创建一个 DataTable
并将 SHOW MASTER STATUS
的详细信息填入其中。
string master_log_file = null;
long master_log_pos = 0;
using (MySqlConnection con = new MySqlConnection(conStrM))
{
using (MySqlCommand cmd = new MySqlCommand("SHOW MASTER STATUS", con))
{
cmd.CommandType = CommandType.Text;
using (MySqlDataAdapter sda = new MySqlDataAdapter(cmd))
{
if (sda != null)
{
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
foreach (DataRow row in dt.Rows)
{
master_log_file = row["File"].ToString();
master_log_pos = Convert.ToInt64(row["Position"]);
}
}
}
}
}
}
从上面的代码我们可以得到master_log_file
和master_log_pos
。